Python : 多重继承 : 为什么 super 的 super class 的实例变量不可访问?

Python : Multiple Inheritance : Why is instance variable of super's super class is not accessible?

这是我要执行的代码,在 Line 1 中最初是 super().super().__init__(),它没有工作(给出错误)。

class A:
    def __init__(self):
        self.var1=5

class B(A):
    def __init__(self):
        self.var2=10

class C(B):
    def __init__(self):
        self.var3=20
        super().__init__() ## Line 1

c=C()
print(c.var1)

编辑 - 当我尝试使用 class B 的对象打印 class A 的变量时,它工作正常

class A:
    def __init__(self):
        self.var1=5

class B(A):
    def __init__(self):
        self.var2=10
        super().__init__()

b=B()
print(b.var1)

我的问题是为什么 c.var1 没有给出正确的输出? (在这两种情况下,super().__init__()super().super().__init__() 我如何访问它?

这里有一个对你有帮助的小测试;

class A:
    def __init__(self):
        self.var1 = 5
        print("In A")

class B(A):
    def __init__(self):
        self.var2 = 10
        print("In B")

class C(B):
    def __init__(self):
        self.var3 = 20
        print("In C")
        super().__init__() ## Line 1

c = C()

将打印;

In C
In B

但是如果你在 B 中添加一个对 A 的构造函数的调用;

class A:
    def __init__(self):
        self.var1 = 5
        print("In A")

class B(A):
    def __init__(self):
        self.var2 = 10
        print("In B")
        super().__init__()

class C(B):
    def __init__(self):
        self.var3 = 20
        print("In C")
        super().__init__() ## Line 1

c = C()

如你所愿;

In C
In B
In A

还有这个……

print(c.var1)
5