这是我尝试执行的代码,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)
编辑 - 当我尝试使用B类对象打印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__()
以及如何访问它?
答案 0 :(得分:4)
这是一个对你有点帮助的小测试;
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