此代码不起作用的原因是什么?
class Parent:
l = []
def __init__(self, val):
print("l is: " + str(Parent.l))
C = type('Child', (Parent,), {})
C.l = [1, 2]
C(1) # prints "l is []" rather than "l is [1,2]"
答案 0 :(得分:1)
您的代码更传统地写成:
class Parent:
l = []
def __init__(self, val):
print("l is: " + str(Parent.l))
class C(Parent):
l = [1, 2]
C(1)
调用C(1)
时,会调用__init__
中的Parent
,因为Child
不会重载它,并且显式地打印Parent.l
,因此{{ 1}}。
如果要使用当前类中定义的[]
,可以通过实例进行访问:
l