目錄
多重繼承
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