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