多重继承未按预期工作
Multiple inheritance not working as expected
我有以下代码片段:
class A:
def __init__(self):
self._a = 1
class B:
def __init__(self):
self._b = 2
class C(A, B):
def __init__(self):
super(C, self).__init__()
self._c = 3
c = C()
生成的 object 没有属性 _b
,事实上 B 的 __init__()
从未被调用。
我希望两个 parents' __init__()
方法一个接一个地被调用。我错了吗?我找不到矛盾的信息。
(我用的是python3.6)
当你简单地提到 super 时,这是一个混淆,调用哪个父级,A 或 B。所以它自然会调用第一个并停止。
要使其调用两个父构造函数,您必须明确提及它。请参考下面的代码。
class A:
def __init__(self):
print("a")
self._a = 1
class B:
def __init__(self):
print("b")
self._b = 2
class C(B, A):
def __init__(self):
A.__init__(self)
B.__init__(self)
self._c = 3
c = C()
要了解更多信息,请阅读此处的优秀答案,
我有以下代码片段:
class A:
def __init__(self):
self._a = 1
class B:
def __init__(self):
self._b = 2
class C(A, B):
def __init__(self):
super(C, self).__init__()
self._c = 3
c = C()
生成的 object 没有属性 _b
,事实上 B 的 __init__()
从未被调用。
我希望两个 parents' __init__()
方法一个接一个地被调用。我错了吗?我找不到矛盾的信息。
(我用的是python3.6)
当你简单地提到 super 时,这是一个混淆,调用哪个父级,A 或 B。所以它自然会调用第一个并停止。
要使其调用两个父构造函数,您必须明确提及它。请参考下面的代码。
class A:
def __init__(self):
print("a")
self._a = 1
class B:
def __init__(self):
print("b")
self._b = 2
class C(B, A):
def __init__(self):
A.__init__(self)
B.__init__(self)
self._c = 3
c = C()
要了解更多信息,请阅读此处的优秀答案,