87. Python中类的多重继承 和MRO函数

目录

多重继承

MRO()函数


多重继承

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章