在多繼承中,如果一個子類繼承了兩個平級的父類,而這兩個父類有兩個相同名字的方法,那麼一般先繼承誰,呼叫方法就呼叫先繼承的那個父類的方法.如:
class A: def test(self): print(`AAAAA`) class B: def test(self): print(`BBBBB`) class C(A,B): pass c = C() c.test() >>>AAAAA
可以看出,先繼承了A,所以輸出的是AAAAA.那麼由此引出了一個問題,python直譯器是如何對方法進行查詢排序的,答案 __mro__ 方法 ,這個方法基於C3 演算法 C3 演算法基於 廣度優先遍歷.