使用类型设置父类属性

时间:2019-12-09 06:47:03

标签: python

此代码不起作用的原因是什么?

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]"

1 个答案:

答案 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