Python C3 算法 手動計算順序

手動計算類繼承C3算法原則:

  1. 以所求類的直接子類的數目分紅相應部分
  2. 按照從左往右的順序依次寫出繼承關係
  3. 繼承關係第一個第一位,在全部後面關係都是第一個出現的,提取出來,其餘都替換掉
  4. 若是步驟3中不成立,就到後面一部分去找
  5. 而後繼續在後面這部分找,知道找不到,再回到第一部分去找
  6. 直到結束。

下面上例題,看下如何應用算法

1.從左到右依次寫出類繼承關係,並分好部分
左邊|右邊
HGECA,HGEA,HGMX,HGMY|HFDBA,HFDCA,HFECA,HFEA
2.合併過程
H                GECA,GEA,GMX,GMY|FDBA,FDCA,FECA,FEA
第一部分第一個第一位G,在全部部分均是第一個出現,或者未出現,能夠提取
HG                ECA,EA,MX,MY|FDBA,FDCA,FECA,FEA
第一部分第一個第一位E,在第一部分均出如今首位,可是在第二部分出如今非首位,因此到到地位部分去找
第二部分第一個第一位F,在全部部分均是第一個出現,或者未出現,能夠提取
HGF                ECA,EA,MX,MY|DBA,DCA,ECA,EA
如今還在第二部分,第二部分第一個第一位D,在全部部分均是第一個出現,或者未出現,能夠提取
HGFD            ECA,EA,MX,MY|BA,CA,ECA,EA
第二部分第一個第一位B,在全部部分均是第一個出現,或者未出現,能夠提取
HGFDB            ECA,EA,MX,MY|A,CA,ECA,EA
第二部分第一個第一位A,在第二部分出如今非首位,去第一部分去找
第一部分第一個第一位E,全部部分均是第一個出現,或者未出現,能夠提取
HGFDB            ECA,EA,MX,MY|A,CA,ECA,EA
HGFDBE            CA,A,MX,MY|A,CA,CA,A
第一部分第一個第一位C,全部部分均是第一個出現,或者未出現,能夠提取
HGFDBEC            A,A,MX,MY|A,A,A,A
第一部分第一個第一位A,全部部分均是第一個出現,或者未出現,能夠提取
HGFDBECA        MX,MY|
HGFDBECAM        X,Y|
HGFDBECAMXY

D C1 B1 A1,D C1 B1 A2|D C2 B1 A1,D C2 B1 A2,D C2 B2 A2|D C3 B2 A2,D C3 B3 A2,D C3 B3 A3
D            C1 B1 A1,C1 B1 A2|C2 B1 A1,C2 B1 A2,C2 B2 A2|C3 B2 A2,C3 B3 A2,C3 B3 A3
D C1        B1 A1,B1 A2|C2 B1 A1,C2 B1 A2,C2 B2 A2|C3 B2 A2,C3 B3 A2,C3 B3 A3
D C1 C2        B1 A1,B1 A2|B1 A1,B1 A2,B2 A2|C3 B2 A2,C3 B3 A2,C3 B3 A3
D C1 C2 B1        A1,A2|A1, A2,B2 A2|C3 B2 A2,C3 B3 A2,C3 B3 A3
D C1 C2 B1 A1        A2|A2,B2 A2|C3 B2 A2,C3 B3 A2,C3 B3 A3
D C1 C2 B1 A1 C3        A2|A2,B2 A2|B2 A2,B3 A2,B3 A3
D C1 C2 B1 A1 C3 B2        A2|A2,A2|A2,B3 A2,B3 A3
D C1 C2 B1 A1 C3 B2 B3        A2|A2,A2|A2,A2,A3
D C1 C2 B1 A1 C3 B2 B3 A2        A3
D C1 C2 B1 A1 C3 B2 B3 A2 A3
相關文章
相關標籤/搜索