天天看点

多重继承|学习笔记

开发者学堂课程【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 中找​。