Ответ 1
Вы не можете сказать диспетчеру класса по умолчанию игнорировать что-то, нет.
jsonpickle
поддерживает модуль pickle
__getstate__
и __setstate__
. Если ваши классы реализуют эти два метода, все, что возвращается, затем используется jsonpickle
для представления состояния вместо этого. Оба метода необходимо выполнить.
Если __getstate__
не реализовано, jsonpickle
вместо этого использует атрибут __dict__
, поэтому ваша собственная версия просто должна использовать тот же словарь, удалить ключ _sa_instance_state
, и вы закончите:
def __getstate__(self):
state = self.__dict__.copy()
del state['_sa_instance_state']
return state
def __setstate__(self, state):
self.__dict__.update(state)
Независимо от того, что возвращается __getstate__
, будет обработано далее, рекурсивно, нет необходимости беспокоиться об обработке подобъектов там.
Если добавление __getstate__
и __setstate__
не является опцией, вы также можете зарегистрировать настраиваемый обработчик сериализации для своего класса; недостатком является то, что, хотя __getstate__
может уйти, просто вернув словарь, пользовательский обработчик должен будет вернуть полностью сплющенное значение.