目录
多重继承
Python支持多重继承, 一个子类可以由多个”直接父类”, 这样, 就具备了”多个父类”的特点, 但是由于, 这样会被”类的整体层次”搞的异常复杂, 尽量避免使用;
MRO()函数
Python支持多继承, 如果父类中有相同名字的方法, 在子类没有指定父类名时, 解释器将”从左到右”按顺序搜索;
MRO(Method Resolution Order) : 方法解析顺序, 我们可以通过mro()方法获得”类的层次结构”, 方法解析顺序也是按照这个”类的层次结构”寻找的;
#多重继承
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): #继承同名方法时,B在前面就先用B的方法,谁在前用谁
def cc(self):
print("cc")
s = C();
s.aa()
s.bb()
s.cc()
print(C.mro()) #打印类的层次结构
s.say() #解释器寻找方法是"从左到右"的方式寻找,此时会执行B
输出:
D:\wwwroot\pyiteam\venv\Scripts\python.exe D:/wwwroot/pyiteam/mypro_obj/mypy02.py
aa
bb
cc
[<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]
say BBB!
Process finished with exit code 0