python 类继承C3算法手动计算顺序技巧

python 类继承C3算法手动计算顺序技巧

手动计算类继承C3算法原则:

  1. 以所求类的直接子类的数目分成相应部分
  2. 按照从左往右的顺序依次写出继承关系
  3. 继承关系第一个第一位,在所有后面关系都是第一个出现的,提取出来,其他都替换掉
  4. 如果步骤3中不成立,就到后面一部分去找
  5. 然后继续在后面这部分找,知道找不到,再回到第一部分去找
  6. 直到结束。
    下面上例题,看下如何应用

1.

在这里插入图片描述

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

2.在这里插入图片描述

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

大功告成!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值