我有这样的例子代码在类实例之间共享列表的正确方法是什么?
my_list = ["a","b","c","d"]
class A:
def __repr__(self):
return ', '.join(my_list)
def add(self, num):
my_list.append(num)
class_list = []
for x in range(5):
class_list.append(A())
class_list[x].add("class_%s" % (x))
print class_list[x]
矿的非示例代码是比较复杂的,但这个想法是,我有过类的多个实例做一个“东西”。全局my_list
用于所有实例。当某个类内部满足某个逻辑时,该实例将修改该列表。其余的课程将利用该列表来执行其逻辑。任何实例都可以添加到列表中,并且所有实例都应该能够使用更新后的值。
现在在这个例子中,my_list
是共享的,但这是正确的方法吗?
附注:总是在Python 2.x中始终使用'class A(object):',而不是'class A:'。否则,你正在创建经典类,它有各种各样的怪癖和错误特征,其中一些危险地接近你想要在这里做的事情。 – abarnert 2014-09-11 00:55:43
为什么不将全局列表作为参数传递给每个实例'__init__'?列表按引用传递,因此每个实例都可以读取和修改列表(假设您没有处理并发)。 – MikeRand 2014-09-11 00:56:58