我想列出一個操作列表(每個操作都由一個corersponding類描述),然後讓我的runner類遍歷它並根據一些規則執行它們。某些操作可能會多次出現在列表中,並具有不同的參數。但是,每個操作都有一些內部數據,這些內部數據應該被計算一次並在以後的調用中重用。將不同的對象狀態添加到列表中
我的想法是隻創建一次操作,然後只是修改不同的屬性。但是這不起作用。
我的測試代碼:
class my_op_class(object):
def __init__(self):
self.data = 1
lst = list()
my_op = my_op_class()
my_op.param = 2
lst.append(my_op)
my_op.param = 3
lst.append(my_op)
for l in lst:
print l.data, l.param
我所期望的輸出如下:
1 2
1 3
那些在蟒蛇好會看到列表中的條目都將PARAM = 3。
我或多或少的理解了爲什麼,但我沒有看到如何獲得我期望的行爲。
爲什麼你所期望的輸出,你現在還不清楚沒有。你明確地*改變*完全相同的對象*上的屬性,它在同一個列表中被引用兩次。爲什麼不創建該類的兩個實例,並將'data'作爲'__init__'的參數? – jonrsharpe