python 多继承中MRO算法

定义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]

重点:

扫描二维码关注公众号,回复: 2390515 查看本文章

#每个列表的第一个元素为头部,从第一个列表的头部开始找,找其他列表中尾部是否含有
这个类名,如果没有,提取出来放到一个列表中,如果有,找下一个列表的头部,循环下去
只要提取来一个,我们就从第一个列表的头部接着重复上面的操作.
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

猜你喜欢

转载自www.cnblogs.com/kyoucai/p/9373432.html