Ответ 1
__getstate__
должен возвращать рисованный объект (например, кортеж) с достаточной информацией для восстановления экземпляра.
__setstate__
должен ожидать получить тот же объект и использовать его для перенастройки экземпляра.
Например:
import cPickle as pickle
class Family(object):
__slots__ = ['father', 'var1']
def __init__(self, father, var1 = 1):
self.father, self.var1 = father, var1
def __getstate__(self):
return self.father, self.var1
def __setstate__(self, state):
self.father, self.var1 = state
foo = Family('father',1)
foo.var1 = 2
foo_pickled = pickle.dumps(foo)
foo2 = pickle.loads(foo_pickled)
print(repr(foo2))
# <__main__.Family object at 0xb77037ec>
print(foo2.var1)
# 2