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

 

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