2017-08-25 75 views
0

我試圖鹹菜類的實例,指的是http://stefaanlippens.net/python-pickling-and-dealing-with-attributeerror-module-object-has-no-attribute-thing.html 但是給我試圖泡菜對象實例拋出酸洗錯誤

try.py

​​

我在這裏犯了一個錯誤? 是否有一個不同的解決方案,以泡菜對象爲獨立的目的

+0

你爲什麼要用'abc .__ module__'搞定? – user2357112

+0

你正在看的文章依賴於一個尷尬的黑客,不再工作。不要用'__module__'擰緊;導入'try'並使用'try.abc'而不是'abc'(並且詛咒Python的尷尬'__main__'系統)。 – user2357112

+0

@ user2357112是的,我也懷疑那個黑客不能再工作了。然而,我的問題是,我需要一個獨立的方式來醃製類對象,它是實例。 –

回答

0

如果你拿走你的abc.__module__ = "try"一切工作正常。

import pickle 

class abc(object): 
     def __init__(self): 
     self.a = 10 
     def save(self): 
     pickle.dump(self,open("try.pkl","wb")) 
if __name__ == '__main__': 
     a = abc() 
     a.save() 

     # proof it worked 
     with open('try.pkl','rb') as pkl_file: 
      b = pickle.load(pkl_file) 
     print(b.a) 

我在最後添加了代碼來重新加載數據並打印它以顯示它是成功的。

+0

嘿,感謝您的回覆,是的,它會工作,但是當你加載try.pkl而不導入try.py在一個單獨的文件,它不會加載,並會拋出屬性錯誤。 - Dwipam Katariya –

+0

這似乎是一個給定的,如果你不導入類,你不能創建它的實例,這是你從泡菜創建它時基本上正在做的。什麼是阻止導入課程的建築/包裝障礙? – Lost