如何Pickle自己?

发布于 2021-01-29 17:53:38

我希望我的班级实现保存和加载功能,这些功能只是对班级进行Pickle。但是显然您不能以以下方式使用“自我”。你该怎么做?

self = cPickle.load(f)

cPickle.dump(self,f,2)
关注者
0
被浏览
53
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这就是我最终要做的。更新__dict__方法是,我们保留我添加到类中的所有新成员变量,并仅更新上次腌制对象时存在的成员变量。在类本身内部维护保存和加载代码时,这似乎是最简单的,因此调用代码仅执行object.save()。

    def load(self):
        f = open(self.filename, 'rb')
        tmp_dict = cPickle.load(f)
        f.close()
    
        self.__dict__.update(tmp_dict)
    
    
    def save(self):
        f = open(self.filename, 'wb')
        cPickle.dump(self.__dict__, f, 2)
        f.close()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看