Какая библиотека 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, так что вы бы не выбрали их для сериализации пользовательского класса.

Другие вопросы по тегам