面向对象之多重继承
常用算法 Mro
模拟一下例子的拓扑排序:首先找入度为0的点,只有一个A,把A拿出来,把A相关的边剪掉,再找下一个入度为0的点,
有两个点(B,C),取最左原则,拿B,这是排序是AB,然后剪B相关的边,这时候入度为0的点有E和C,取最左。
这时候排序为ABE,接着剪E相关的边,这时只有一个点入度为0,那就是C,取C,顺序为ABEC。剪C的边得到两个入度为0的点(DF),取最左D,顺序为ABECD,
然后剪D相关的边,那么下一个入度为0的就是F,然后是object。
那么最后的排序就为ABECDFobject。
class D():
pass
class E():
pass
class F():
pass
class B(E,D):
pass
class C(D,F):
pass
class A(B,C):
pass
class a():
pass
class b():
pass
class c():
pass
class d(b, c):
pass
class e(a, b):
pass
class f(e, d):
pass
if __name__ == '__main__':
print(1)
print(A.__mro__ ) # ABECDF->Object
print(f.__mro__) # feadbc->Object 跟继承参数顺序有关 先左后右
# 随意乱写
class _A():
pass
class _B(_A):
pass
class _C(_B):
pass
class _D(_B):
pass
class _E(_C, _D):
pass
class _F(_A):
pass
class _G(_E, _F):
pass
if __name__ == '__main__':
print(_G.__mro__) # _G_E_C_D_B_F_A
关注一波!喜欢一波!本人是前端菜鸟,正在做自己的个人博客邓鹏的博客,欢迎来交流学习, 使用的技术 vue + koa2 + mysql + php + nginx!