开发者学堂课程【Python 语言基础 3:函数、面向对象、异常处理:多重继承】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:
https://developer.aliyun.com/learning/course/601/detail/8753多重继承
目录:
一、相关例子
二、影藏属性
三、多重继承
如下所示:
Class a(object):
Det test(self):
Print(AAA)
Class b(A)
Det test(self):
Print(BBB)
Class C(B)
Det test(self):
Print(CCC)
现在的关系很明确,B 继承 C,C 继承 D,现在使 A 和 B 都 继承 object,则
Class a(object):
Det test(self):
Print(AAA)
Class b(object)
Det test2(self):
Print(BBB)
Class C(B)
pass
类名 . _ bases_ 这个属性可以用来获取当前类的所有父类
print(C.__bases__) (<class ‘__main__.B’>,)
print(B .__bases__) (<class ‘object’>,)
一个类中可以有多重父类:在 Python 中是支持多重继承的,也就是我们可以为一个类同时指定多个父类
可以在类名的( )后边添加多个类,来实现多重继承
例:Class C(A ,B):表示 C 既继承了 A 和 B
多重继承,会使子类同时拥有多个父类,并且会获取到所有父类中的方法
print(C.__bases__) (<class ‘__main__.A ’ >, <class ’__main__.B>)
可用简单的树形结构体现,即
在开发中没有特殊的情况,应该尽量避免使用多重继承,因为多重继承会让我们的代码过于复杂.
如果多个父类中有同名的方法,则会现在第一个父类中寻找,然后找第二个,然后找第三个。多重继承的特点:前边父类的方法会覆盖后边父类的方法.
如图所示
找 D 中 test(),首先,先在自身中找,若自身没有则去第一个父类里找(假设第一个父类是 A),则去A中找,若没有则去 object 中找,若没有再去 B 中找,若还是没有,则去 B 的父类中找,
此时注意:找过一次就不会再找。B 中没有则去第三个父类 C 中找。