编写一个__getstate__
方法的最佳方法是什么,该方法可以pickle几乎一个对象的所有属性,但排除一些属性?
我有一个具有许多属性的对象,包括一个引用instancemethod的对象。instancemethod不可pickle,因此尝试pickle此对象时出错:
class Foo(object):
def __init__(self):
self.a = 'spam'
self.b = 'eggs'
self.c = 42
self.fn = self.my_func
def my_func(self):
print 'My hovercraft is full of eels'
import pickle
pickle.dumps(Foo()) # throws a "can't pickle instancemethod objects" TypeError
此__getstate__
方法修复了此问题,但随后我必须手动包含要序列化的所有属性:
def __getstate__(self):
return { 'a': self.a, 'b': self.b, 'c': self.c }
如果我有一个具有许多属性或经常更改的对象,那么这就不是很可伸缩或可维护的。
我能想到的唯一选择是某种helper函数,它遍历对象的属性,并根据类型将它们添加(或不添加)到字典中。
目前没有回答
相关问题 更多 >
编程相关推荐