好吧,这很有趣。在
代码将最好地说明我的想法:
class Restorable(object):
def __init__(self, a=1, b=1):
self.a = a
self.b = b
def restore(self, serialized_object):
# I'm aware this is local, just illustrating
self = pickle.loads(serialized_object)
r = Restorable()
r.a = 1000
r.b = 2000
saved_state = pickle.dumps(r)
r.a = -1
r.b = -1
r.restore(pickle.dumps(saved_state)
# r.a should again be 1000
# r.b should again be 2000
这个想法是:可以,比如说,pickle.dumps()
一个对象,将其存储在某处,修改真实的对象,然后通过我安全存储的内容将其恢复到以前的状态?在
我已经尝试过上面显示的代码,它会暂时将self
设置为以前的状态,但只是局部的-好吧,这里并不奇怪。在
这是个好奇的问题。在
编辑:将问题表述清楚:
是否可以编写一个使用相同类型的序列化对象来恢复其状态的对象?在
实际上,我认为这可以通过在restore()
内创建序列化对象的实例并逐个复制值来实现。但对于大型物体来说,这可能很乏味。在
正如您在编辑中所说的,创建一个新的对象(显然不要指定给
self
),但是您可以不逐个复制属性同时更新所有属性。以下是您的完整(返工)示例:
^{pr2}$相关问题 更多 >
编程相关推荐