Discuss / Python / 笔记:关于多重继承的继承顺序

笔记:关于多重继承的继承顺序

Topic source

郝仁E哥

#1 Created at ... [Delete] [Delete and Lock User]

我的理解:多种继承的继承顺序主要是根据拓扑排序的思想进行继承的,拓扑继承可以参考http://blog.csdn.net/qq_35644234/article/details/60578189 ,在Python中根据C3 MRO算法用于方法解析顺序,其实跟拓扑排序的思想差不多,C3 MRO可以参考http://www.codeweblog.com/python-mro-c3%E7%AE%97%E6%B3%95/ ,在这篇文章中我收获到了一个很方便查看继承顺序的东西:--mro--',前后各两个下划线,这里显示不出来双下划线,我用两个减号代替了,这个--mro--可以让我们快速看到某个类真实继承顺序,而不用自己去推理,验证代码借用了评论里一位回复比较多的老哥的的帖子里的代码,如下:

<code></code> class D(object): pass

class E(object): pass

class F(object): pass

class C(D, F): pass

class B(E, D): pass

class A(B, C): pass

print(A.__mro __)

</code>

那这个 mro 的意思就是说 可以看到A 到底属于大类下面的哪些小类?是可以看到每个小类吗

郝仁E哥

#3 Created at ... [Delete] [Delete and Lock User]

@罗田心Livia

在非多态继承时,可以看类的继承结构(由小到大),但__mro__属性主要用于多重继承的情况下,可以快速看到可以类的继承先后顺序,而不用自己根据拓扑排序的思想去推理某个类的继承先后顺序

  • 1

Reply