mro之C3算法
阿新 • • 發佈:2018-10-20
我們 如果 div bsp 部分 clas bec 滿足 繼承
mro之C3算法
# C3算法 歸並算法 class A(object): pass class B(A): pass class C(A): pass class D(B): pass class E(C): pass class F(D, E): pass print(F.__mro__) ######################### # 第一步先找到繼承的父類的MRO # D = [D, B, A, O] # E = [E, C, A, O] # 第二步 把父類這兩個MRO 和 DE 進行歸並 # 取每個表表頭 並且其他表內容部分不能含有我們要取的那個表頭 # 如果不滿走就去取第二個表頭 # merge([DBAO], [ECAO], [DE]) # D在表頭(第一位,而其他的內容部分都沒有D,[BAO],[CAO],故滿足要求) # FD merge([BAO], [ECAO], [E]) # B在表頭(第一位,而其他的內容部分都沒有B,[AO],[CAO],故滿足要求) # FDB merge([AO], [ECAO], [E]) # A在表頭(第一位,而其他的內容部分有A,[AO],[CAO],故不滿足要求,看第二個列表[ECAO]) # E在表頭(第一位,而其他的內容部分都沒有E,[AO],[CAO],故滿足要求 # FDBE merge([AO], [CAO]) # C在表頭(第一位,而其他的內容部分都沒有C,[AO],[AO],故滿足要求,AO以此類推 # FDBEC merge([AO], [AO]) # FDBECAOmro之C3算法