Python Pickle 调用构造函数
Python Pickle call constructor
我想使用 Python 的 pickle 序列化程序为缺失值提供默认值。由于 类 很简单,默认值自然存在于 类 的 __init__
方法中。
从pickle documentation可以看出有__getnewargs__
。但是,这仅适用于 __getnewargs__
在 "pickling".
之前存在的情况
有什么方法可以告诉 python pickle 始终调用构造函数而不是从未初始化的对象开始?
Unpickling 总是会在不调用 __init__()
的情况下创建一个实例。这是设计使然。在 python 2 中,可以覆盖 __getinitargs__()
以导致 unpickling 调用带有一些参数的 __init__()
,但是有必要在 pickling 时覆盖此方法。这在 python 3 中不再可用。
要实现你想要的,从self.__setstate__(state)
手动调用self.__init__()
不就可以了吗?您可以提供 state
.
中没有的任何默认参数
我想使用 Python 的 pickle 序列化程序为缺失值提供默认值。由于 类 很简单,默认值自然存在于 类 的 __init__
方法中。
从pickle documentation可以看出有__getnewargs__
。但是,这仅适用于 __getnewargs__
在 "pickling".
有什么方法可以告诉 python pickle 始终调用构造函数而不是从未初始化的对象开始?
Unpickling 总是会在不调用 __init__()
的情况下创建一个实例。这是设计使然。在 python 2 中,可以覆盖 __getinitargs__()
以导致 unpickling 调用带有一些参数的 __init__()
,但是有必要在 pickling 时覆盖此方法。这在 python 3 中不再可用。
要实现你想要的,从self.__setstate__(state)
手动调用self.__init__()
不就可以了吗?您可以提供 state
.