93.多重继承
Python支持
多重继承
,一个子类
可以有多个“直接父类”
。这样,就具备
了“多个父 类”的特点
。但是由于,这样会被“类的整体层次”
搞的异常复杂,尽量避免使用
。
# 测试多重继承
class A:
def aa(self):
print("aa")
class B:
def bb(self):
print("bb")
class C(B, A):
def cc(self):
print("cc")
c = C()
c.cc()
c.bb()
c.aa()
# 输出
cc
bb
aa
mro()
Python 支持多继承,如果父类中有相同名字的方法,在子类没有指定父类名时,解释器将
“从左向右”按顺序搜索。
MRO(Method Resolution Order)
:方法解析顺序。 我们可以通过 mro()
方法获得
“类的层次结构”
,方法解析顺序
也是按照这个“类的层次结构”
寻找的。
就是我写的父类的顺序来解析,同名 的类
,优先调用
现在 前面的 比如 class C(A,B)
: 那么就先调用A
代码如下:
# 多重继承
'''
class A:
def aa(self):
print("aa")
def say(self):
print("say AAA!")
class B:
def bb(self):
print("bb")
def say(self):
print("say BBB!")
class C(B, A):
def cc(self):
print("cc")
c = C()
print(C.mro()) # 打印类的层次结构
c.say() # 解释器寻找方法是“从左到右”的方式寻找,此时会执行 'B'类中的 say()