【发布时间】:2019-01-15 05:23:04
【问题描述】:
注意事项:
- 在打印 D 类的 MRO 时获取正确的继承顺序,但无法获取 C 类的构造函数调用。
问题:为什么不在下面给定代码中的 A 构造函数 之后打印 C 构造函数?:
class A(object):
def __init__(self):
print("A Constructor")
class B(A):
def __init__(self):
print("B Constructor")
super(B, self).__init__()
class C():
def __init__(self):
print("C Constructor")
super().__init__()
def method(self):
print("C method")
class D(B, C):
def __init__(self):
print("D Constructor")
super(D, self).__init__()
super().method()
d = D()
print(D.__mro__)
【问题讨论】:
-
我无法解释,所以我不发布答案,但解决它的方法是更改:
class D(B,C):到class D(C,B): -
@U9-Forward:是的,能够在从 D(B, C) 类更改为 D(C, B) 类时打印所有需要的值。但我想知道为什么上面的代码没有给出预期的答案。
-
是的,这就是我没有回答的原因
-
@blhsing 在打印 D.__mro__ 时获得正确的顺序,但没有获得 C 类的构造函数调用
标签: python class oop constructor multiple-inheritance