class A():
a = [1, 2]
class B(A):
a = super().a + [3]
给出错误:
RuntimeError: super(): no arguments
我希望结果是
class B(A):
a = [1, 2, 3]
答案 0 :(得分:1)
您可以使用A.a
代替super。
,但是当您没有创建实例时就不能调用super。像这样:
class A():
def __init__(self):
self.a = [1, 2]
class B(A):
def __init__(self):
super(B, self).__init__()
self.a += [3]
然后在创建实例时:
i = B()
print(i.a)
>> [1, 2, 3]
答案 1 :(得分:0)
班级变量可以由您的班级以及同一时间班级实例访问。 因此,这里发生的是,当我们尝试访问实例上的属性时,它首先检查实例是否包含该属性;如果不是,它将检查父类或从其继承的任何类是否包含属性。
class A():
a = [1, 2]
class B(A):
a = A.a + [3]
测试:
print(A.a) # access class variable using the class
print(B.a) # access class variable using the class inheritance as B inherit from A
ins = A() # initializing instance of class A
print(ins.a) # access class variable using instance of the class
输出:
[1, 2]
[1, 2]
[1, 2]
如您所见,我们得到相同的输出。