期間傳遞類引用另一個類,我打算創建一個數據發佈類作爲可變類:Python的建設
class DataDistributor(object):
def __init__(self):
self.target_trackid = -1
def next_sen(self):
self.target_trackid += 1
return self.target_trackid
所以,我可以在全球範圍保持指針在我的數據。
我有另一個類:
class Env(object):
def __init__(self, distributor):
self.distributor = distributor
self.target_trackid = 0 # init
def reset(self):
self.target_trackid = self.distributor.next_sen()
所以,當我創造了許多Env
實例,每個實例Env
將獲得不同的數據點。
所以我用它來創建我的實例:
ddist = DataDistributor()
env = Env(ddist)
envs = [pickle.loads(pickle.dumps(env)) for _ in range(12)]
envs[0].reset()
envs[1].reset()
envs[2].reset()
print envs[0].target_trackid
print envs[1].target_trackid
print envs[2].target_trackid
而且結果都是一樣的:一束0的。
我不完全相信Python是如何處理這個:(如果有一個可行的解決方案,以達到我想要達到的目標!
我真的不明白你在做什麼。什麼是傾銷和立即加載泡菜?你期待什麼輸出? –
你想擁有'Env'的_one_實例。現在取消基於醃製狀態創建新的實例。 –
啊啊!是。我沒有注意到'pickle'是問題所在。我沒有編寫代碼的'pickle'部分,這是我嘗試使用的庫內部。我改變了這部分,現在它工作!謝謝!! –