Какая библиотека Python для сериализации плохо спроектированного класса
Может ли кто-нибудь помочь мне понять, как и почему выбирать, например, pickle
а также dill
?
Мой вариант использования следующий. Я хотел бы сбросить объект, экземпляр которого получен множественным наследованием из некоторых классов внешних библиотек. Более того, один атрибут класса - это словарь, в котором в качестве значения используется функция. К сожалению, эта функция определена в рамках класса.
def class:
def f():
def that_function():
# do someth
# back within f() scope
self.mydata{'foo':that_function}
Любой комментарий относительно устойчивости к внешним зависимостям?
Или любую другую библиотеку, которую я мог бы рассмотреть для сериализации?
1 ответ
Я dill
автор. Вы должны использовать pickle
если все объекты, которые вы хотите протравить, можно протравить pickle.dump
, Если один или несколько объектов не поддаются pickle
затем используйте dill
, Увидеть pickle
документы для чего можно мариновать pickle
, dill
может возделывать большинство объектов Python, за некоторыми исключениями.
Если вы хотите рассмотреть альтернативы dill
есть cloudpickle
, который имеет аналогичную функциональность dill
(и очень похоже на dill
когда используешь dill.settings['recurse'] = True
).
Есть другие библиотеки сериализации, такие как json
, но они на самом деле сериализуют меньше объектов, чем Pickle, так что вы бы не выбрали их для сериализации пользовательского класса.