我不明白这是怎么回事。我有一个类“C”,它是“B”的子类。“B”有一个属性“b”,它是类“A”的一个实例。“A”有一个属性,称为“a”的列表。当我初始化“C”的两个不同实例时,它们具有相同的“A”实例,这样当我附加到 Aa 时,它会导致“C”的两个实例都具有附加属性“ba”。
class A:
a = list()
class B:
b = A()
class C(B):
pass
one = C()
two = C()
one.b.a.append('one')
one.b.a.append('two')
two.b.a.append('three')
print(one.b.a)
print(two.b.a)
运行这段代码打印出:
['one', 'two', 'three']
['one', 'two', 'three']
显然,one.ba 和 two.ba 指向同一个对象,而我本以为每次调用 C() 时都会初始化“A”的新实例。为什么会发生这种情况,我该如何解决?
慕仙森
相关分类