在通過重新編譯腳本更新類定義之後,pickle拒絕序列化該類的先前實例化的對象,並給出錯誤:「Can not pickle object:它不是相同的對象「Python pickle:處理更新的類定義
有沒有辦法告訴泡菜它應該忽略這種情況?要僅按名稱識別類別,請忽略哪個內部唯一ID導致不匹配?
我一定會歡迎作爲一個答案的建議,替代,等效模塊,以方便和強大的方式解決這個問題。
供參考,這是我的動機:
我創建一個高效率,快速迭代開發環境中的Python腳本編輯直播。腳本被重複編譯,但數據在編譯時仍然存在。作爲生產力目標的一部分,我嘗試使用pickle進行序列化,以避免爲不斷變化的數據結構編寫和更新顯式序列化代碼的成本。
大多是我序列化內置類型。我非常小心地避免了我在醃製的類中發生的有意義的更改,並且在必要時我使用copy_reg.pickle機制對unpickle執行上變頻。
即使類定義沒有真正改變(或者只是以一種良性的方式進行改變),腳本重新編譯也可以防止酸洗對象。
我還沒有花太多時間,但這可能是有用的:http://docs.python.org/2/library/pickle.html#pickling-and-unpickling-normal-class-instances – mgilson 2013-04-28 23:21:25