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
这是我要执行的代码,在 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