小编典典

如何避免在实例之间共享类数据?

all

我想要的是这种行为:

class a:
    list = []

x = a()
y = a()

x.list.append(1)
y.list.append(2)
x.list.append(3)
y.list.append(4)

print(x.list) # prints [1, 3]
print(y.list) # prints [2, 4]

当然,当我打印时真正发生的是:

print(x.list) # prints [1, 2, 3, 4]
print(y.list) # prints [1, 2, 3, 4]

显然,他们在课堂上共享数据a。如何获得单独的实例来实现我想要的行为?


阅读 54

收藏
2022-08-27

共1个答案

小编典典

你要这个:

class a:
    def __init__(self):
        self.list = []

在类声明中声明变量使它们成为“类”成员而不是实例成员。在方法中声明它们__init__可确保在对象的每个新实例旁边创建成员的新实例,这是您正在寻找的行为。

2022-08-27