1. 程式人生 > >Python 多繼承與MRO-C3算法

Python 多繼承與MRO-C3算法

基因 bsp size font 廣度優先 com mage 搜索 name

繼承關系圖:

技術分享圖片

廣度優先遍歷:先找A,再找B、C,最後找D、E。(順序:A、B、C)

深度優先遍歷:先找A,再找B,接著找D、E(把B裏面找完);然後找C。(順序:A、B、D、E、C)


MRO-C3 搜索:

>>> class D:
    name = ‘d‘
  
>>> class E:
    pass

>>> class C:
    name = ‘c‘
  
>>> class B(D,E):  #繼承多個父類,如:遺傳爸爸和媽媽的基因。
    pass

>>> class A(B,C):  #繼承多個類,如:爸爸和媽媽都會吃飯,但是每個人吃飯的方式不一樣,看如何遺傳
    pass

>>> print(A.name)  #類A繼承了B類和C類,它會先去B類(B類繼承了D類和E類)裏面,找結果是pass;然後去B類裏面的D類找,結果用name屬性。

#如果還沒有的話就回去E類裏面找。 d >>>

  

Python 多繼承與MRO-C3算法