假设我有一节课:
class Thing(object):
cachedBar = None
def __init__(self, foo):
self.foo = foo
def bar(self):
if not self.cachedBar:
self.cachedBar = doSomeIntenseCalculation()
return self.cachedBar
为了得到巴尔一些激烈的计算,所以我把它缓存在内存中以加快速度。在
但是,当我pickle其中一个类时,我不希望cachedBar
被pickle。在
我可以将cachedBar标记为volatile/transient/not pickle吗?
根据Pickle documentation,您可以提供一个名为
__getstate__()
的方法,该方法返回表示要进行pickle的状态的内容(如果没有提供,pickle
将使用thing.__dict__
)。所以,你可以这样做:这不一定是dict,但是如果是其他东西,您还需要实现
__setstate__(state)
。在实现^{} 只返回对象中要pickle的部分
相关问题 更多 >
编程相关推荐