2017-08-25 62 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