尝试pickle对象实例抛出酸洗

2024-06-16 11:15:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图pickle类实例,引用http://stefaanlippens.net/python-pickling-and-dealing-with-attributeerror-module-object-has-no-attribute-thing.html 但是给了我

在try.py在

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()
      abc.__module__ = "try"
      a.save()

pickle.PicklingError: Can't pickle <class 'try.abc'>: it's not the same object as try.abc

我是不是犯了个错误? 是否有不同的解决方案来为独立目的pickle对象


Tags: and实例selfhttpnetobjectsavedef
1条回答
网友
1楼 · 发布于 2024-06-16 11:15:00

如果你把你的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)

我在末尾添加了一些代码来重新加载数据并打印出来,以显示它是成功的。在

相关问题 更多 >