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__)
原文地址:https://www.cnblogs.com/ls13691357174/p/9878411.html