我有這樣的例子代碼在類實例之間共享列表的正確方法是什麼?
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