多重继承未按预期工作

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()

要了解更多信息,请阅读此处的优秀答案,