Python中类和对象(2)

1.继承

Python 的类是支持继承的:它可以使用现有类的所有功能,并在无需重新编写代码的情况下对这些功能进行扩展。

通过继承创建的新类称为 “子类”,被继承的类称为 “父类”、“基类” 或 “超类”。

继承语法是将父类写在子类类名后面的小括号中:

>>> class A:
...     x = 520
...
...     def hello(self):
...         print("你好,我是A~")
...
>>> class B(A):
...     pass
...
>>> b = B()
>>> b.x
520
>>> b.hello()
你好,我是A~

基于上面代码的继承关系,类 A 就是父类,类 B 则是子类。

如果在子类 B 里面,存在跟父类 A 一样的属性和方法名,那么子类就会覆盖父类:

>>> class B(A):
...     x = 880
...
...     def hello(self):
...         print("你好,我是B~")
...
>>> b = B()
>>> b.x
880
>>> b.hello()
你好,我是B~

2.isinstance和issubclass

isinstance() 函数用于判断一个对象是否属于某个类。
issubclass() 函数用于判断一个类是否属于某个类的子类。
小甲鱼友情提示:

在还没有学习 isinstance() 函数之前,我们使用 type() 函数判断对象的类型,其实这对 type() 函数来说真有点大材小用了(type 其实是 Python 中的神,学到后面你们就知道了o)。

对于检测对象类型(也就是检测对象所属的类)这件小事来说,使用 isinstance() 函数无疑是更名副其实的!

另外,使用 isinstance() 函数还会将父类考虑进去:

>>> class A:
...     pass
...
>>> class B(A):
...     pass
...
>>> b = B()
>>> isinstance(b, B)
True
>>> isinstance(b, A)
True
>>> type(b)
<class '__main__.B'>

3.多重继承

Python 的类是支持多重继承的,也就是一个子类同时可以继承多个父类:

>>> class A:
...     x = 520
...     def hello(self):
...         print("你好,我是A~")
...
>>> class B:
...     x = 880
...     y = 250
...     def hello(self):
...         print("你好,我是B~")
...
>>> class C(A, B):
...     pass
...
>>> issubclass(C, A)
True
>>> issubclass(C, B)
True

如果实例化一个类 C 的对象为 c,那么访问 c.x 和调用 c.hello() 得到的结果分别是:

>>> c = C()
>>> c.x
520
>>> c.y
250
>>> c.hello()
你好,我是A~

从例子中可以看出,对于多个父类拥有相同属性和方法的情况,它的访问顺序是按从左到右的。

4.组合

类的组合跟继承不同,继承是具有上下从属关系,而组合的多个类则是同级关系,下面代码演示的就是类的组合:

>>> class Turtle:
...     def say(self):
...         print("不积跬步,无以至千里!")
...
>>> class Cat:
...     def say(self):
...         print("喵喵喵~")
...
>>> class Dog:
...     def say(self):
...         print("哟吼,我是一只小狗~")
...
>>> class Garden:
...     t = Turtle()
...     c = Cat()
...     d = Dog()
...     def say(self):
...         self.t.say()
...         self.c.say()
...         self.d.say()
...                
>>> g = Garden()
>>> g.say()
不积跬步,无以至千里!
喵喵喵~
哟吼,我是一只小狗~

5.思维导图

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰深入学习计算机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值