Каков наилучший способ написать метод __getstate__
, который солит почти все атрибуты объекта, но исключает несколько?
У меня есть объект со многими свойствами, включая тот, который ссылается на метод instance. instancemethod не разборчивы, поэтому я получаю сообщение об ошибке при попытке рассортировать этот объект:
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 }
Это не очень масштабируемое или поддерживаемое, если у меня есть объект со многими атрибутами или который изменяется часто.
Единственная альтернатива, о которой я могу думать, это некоторая вспомогательная функция, которая выполняет итерации через свойства объекта и добавляет их (или нет) в словарь, основываясь на типе.