码迷,mamicode.com
首页 > 编程语言 > 详细

mro之C3算法

时间:2018-10-20 11:02:46      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:第一步   object   归并算法   并且   class   归并   继承   要求   int   

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])
# FDBECAO

mro之C3算法

标签:第一步   object   归并算法   并且   class   归并   继承   要求   int   

原文地址:https://www.cnblogs.com/nzd123456/p/9820894.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!