Python多繼承的執(zhí)行順序

經典類和新式類的寫法:

<pre>
class A: #經典類(舊式類)寫法
..................
class A(object): #新式類寫法
..................
</pre>

廣度優(yōu)先

廣度優(yōu)先.jpeg

深度優(yōu)先

深度優(yōu)先.jpeg

在Python 3.x中:

<pre>class A(object):
def init(self):
print('--------A')
class B(A):
def init(self):
print('-------B')
class C(A):
def init(self):
print('--------C')
class D(B,C):
pass
# def init(self):
# print('------D')</pre>

經典類和新式類按統(tǒng)一的廣度優(yōu)先的順序執(zhí)行,所以D的繼承會以廣度優(yōu)先的順序來執(zhí)行查找可用的init構造函數(shù),即:D-B-C-A

在Python 2.x中:

經典類寫法按深度優(yōu)先的順序執(zhí)行,即D的繼承會以深度優(yōu)先的順序來執(zhí)行查找可用的init構造函數(shù),即:D-B-A-C
新式類寫法按廣度優(yōu)先的順序執(zhí)行,即D的繼承會以深度優(yōu)先的順序來執(zhí)行查找可用的init構造函數(shù),即:D-B-C-A

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容