【发布时间】:2015-10-21 09:08:10
【问题描述】:
所以我一直在对 Python 2.7 多重继承和 MRO 的美妙世界进行一些研究,并且在阅读时尝试了不同的示例,我遇到了一些让我非常困惑的事情。
所以你已经有了经典的钻石 MI 示例:
class A:
def __init__(self):
print "A"
class B(A):
pass
class C(A):
def __init__(self):
print "C"
class D(B, C):
pass
instance = D()
在我读过的所有 MRO 资源中,这个例子应该有一个 DBCA 的 MRO,所以初始化 D 应该打印“C”,而是打印“A”。奇怪的是,当我将 A、B、C 或 D 的定义更改为 int 之类的子类时,它给了我打印“C”的预期行为
为什么类结构的 MRO 行为会因基类是否为原始类型而有所不同?这是一个错误吗?
【问题讨论】:
标签: python python-2.7 multiple-inheritance method-resolution-order