首页 > 解决方案 > Python3 酸洗一个对象;它的布尔属性没有正确解开

问题描述

我有一个类,可以使用该pickle模块进行自我序列化。

这个类有一些属性,初始化为False

class A():
    _bool_attribute = False

设置和使用 getter 和 setter,如下所示:

@property
    def bool_attribute(self):
        return self._bool_attribute

@bool_attribute.setter
    def bool_attribute(self, b):
        self._bool_attribute = b

有一些方法可以更改这些属性,如下所示:

def method_ex(self):
    self.bool_attribute = True

但是,当使用pickle“保存”和“恢复”时,属性值并不一致:

>>> s = A()
>>> s.method_ex()
>>> s.bool_attribute
True
>>> s.save()
>>> t = A()
>>> t.load()
>>> t.bool_attribute
False

“保存”和“加载”就像这样简单地完成:

def save(self):
    pickle.dump(self, open("file", "wb"))

def load(self):
    self = pickle.load(open("file"), "rb))

为什么属性值不是两者True?我怎样才能像班上的其他人一样正确地腌制这个值?

标签: pythonpython-3.xpicklemarshalling

解决方案


推荐阅读