我有以下代码。父类拥有一个项目列表,子类需要添加到其中。
每个父对象实例都需要有这个列表,每个子类也需要有那个列表和额外的值。
我该如何获得以下结果呢?
每个父对象实例都需要有这个列表,每个子类也需要有那个列表和额外的值。
class Parent(object):
a_list = ['parent_item1', 'parent_item2', ]
def print_list(self):
print(self.a_list)
class Child1(Parent):
def __init__(self, *args, **kwargs):
super(Child1, self).__init__(*args, **kwargs)
self.a_list += ['child1_item']
class Child2(Parent):
def __init__(self, *args, **kwargs):
super(Child2, self).__init__(*args, **kwargs)
self.a_list += ['child2_item']
parent = Parent()
child1 = Child1()
child2 = Child2()
parent.print_list()
# >> ['parent_item1', 'parent_item2', 'child1_item', 'child2_item']
child1.print_list()
# >> ['parent_item1', 'parent_item2', 'child1_item', 'child2_item']
child2.print_list()
# >> ['parent_item1', 'parent_item2', 'child1_item', 'child2_item']
我该如何获得以下结果呢?
['parent_item1', 'parent_item2', ]
['parent_item1', 'parent_item2', 'child1_item', ]
['parent_item1', 'parent_item2', 'child2_item', ]
super
不是“简单和清晰”的说法。super
方法的设计目的是通过名称替代对父类的显式引用。这样,如果您更改当前类的继承树,super
将自动解决任何引用问题。 - Joel Cornett