哪个 python 库用于序列化设计不佳的 class
which python library to serialize a poorly designed class
任何人都可以帮助我了解如何以及为什么要从中进行选择吗? pickle
和 dill
?
我的用例如下。
我想转储一个对象,该对象的 class 实例是通过从某些外部库 classes 的多重继承派生的。此外 class 的一个属性是字典,它具有作为值的功能。
不幸的是,该函数是在 class.
的范围内定义的
def class:
def f():
def that_function():
# do someth
# back within f() scope
self.mydata{'foo':that_function}
对外部依赖的稳健性有何评论?
或者我可以考虑用于序列化的任何其他库?
我是 dill
作者。如果你想 pickle 的所有对象都可以被 pickle.dump
pickle,你应该使用 pickle
。如果一个或多个对象无法使用 pickle
进行 unpickle,则使用 dill
。有关可以用 pickle
腌制的内容,请参阅 pickle
文档。 dill
可以 pickle 大多数 python 对象,但有一些例外。
如果您想考虑替代 dill
,可以使用 cloudpickle
,它具有与 dill
类似的功能(并且在使用 [时与 dill
非常相似=22=]).
还有其他序列化库,例如 json
,但实际上它们序列化的对象比 pickle 少,因此您不会选择它们来序列化用户构建的 class.
任何人都可以帮助我了解如何以及为什么要从中进行选择吗? pickle
和 dill
?
我的用例如下。 我想转储一个对象,该对象的 class 实例是通过从某些外部库 classes 的多重继承派生的。此外 class 的一个属性是字典,它具有作为值的功能。 不幸的是,该函数是在 class.
的范围内定义的def class:
def f():
def that_function():
# do someth
# back within f() scope
self.mydata{'foo':that_function}
对外部依赖的稳健性有何评论?
或者我可以考虑用于序列化的任何其他库?
我是 dill
作者。如果你想 pickle 的所有对象都可以被 pickle.dump
pickle,你应该使用 pickle
。如果一个或多个对象无法使用 pickle
进行 unpickle,则使用 dill
。有关可以用 pickle
腌制的内容,请参阅 pickle
文档。 dill
可以 pickle 大多数 python 对象,但有一些例外。
如果您想考虑替代 dill
,可以使用 cloudpickle
,它具有与 dill
类似的功能(并且在使用 [时与 dill
非常相似=22=]).
还有其他序列化库,例如 json
,但实际上它们序列化的对象比 pickle 少,因此您不会选择它们来序列化用户构建的 class.