C3算法

from django.test import TestCase

# Create your tests here.
# 归并算法
class A:pass
class B(A):pass
class C(A):pass
class D(B):pass
class E(C):pass
class F(D,E):pass

# 第一步 先找出F类的父类的MRO
# D [D,B,A,O]
# E [E,C,A,O]
# merge([D,B,A,O], [E,C,A,O], [D,E])
# 第一个表的表头  后面所有的表去掉表头部分不能含有这个D
# FD merge([B,A,O], [E,C,A,O], [E])
# FDB merge([A,O], [E,C,A,O], [E])
# 不满足条件时 取二个
# FDBE merge([A,O], [C,A,O])
# FDBEC merge([A,O], [A,O])
# FDBECAO

print(F.__mro__)

 

posted on 2018-10-30 17:52  liangliang123456  阅读(115)  评论(0编辑  收藏  举报

导航