python mro算法_python MRO排序-C3算法图解

定义8个类 A,B,C,D,E,F,G,H

A继承B,C,D

C继承E E继承G G继承H

B继承D D继承F F继承H

下面看表示的直观图

多继承类图表

下面是继承的执行顺序:

#首先找到A继承的三个类的深度继承顺序,放到一个列表中

L[B] = [B,D,F,H] #B往上面的继承顺序

L[C] = [C,E,G,H] #C往上面的继承顺序

L[D] = [D,F,H] #D往上面的继承顺序

#第二步:A自己的广度,第一层

L[A] = [B,C,D]

最终顺序list = [A,B,C,D,F,E,G,H,O]

重点:

#每个列表的第一个元素为头部,从第一个列表的头部开始找,找其他列表中尾部是否含有

这个类名,如果没有,提取出来放到一个列表中,如果有,找下一个列表的头部,循环下去

只要提取来一个,我们就从第一个列表的头部接着重复上面的操作.

1 [B,D,F,H] [C,E,G,H] [D,F,H] [B,C,D]

2 [D,F,H] [C,E,G,H] [D,F,H] [C,D] #提取了头部的B,然后将其他列表头部的B删除,并将B放到list中

3 [D,F,H] [E,G,H] [D,F,H] [D] #因为第一个列表的D在其他列表的尾部存在,所以跳过D,然后找第二个列表的头部C,提取了头部的C,然后将其他列表头部的B删除,并将B放到list中

4 [H] [H] [H] []

看不懂的同学可以加我QQ交流:516833759

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值