gpt4 book ai didi

Python Pickle 调用构造函数

转载 作者:行者123 更新时间:2023-12-02 04:49:35 24 4
gpt4 key购买 nike

我想使用 Python 的 pickle 序列化程序提供缺失值的默认值。由于类很简单,默认值自然存在于类的 __init__ 方法中。

我可以从pickle documentation看到有__getnewargs__。但是,这仅适用于“pickling”之前存在 __getnewargs__ 的情况。

有没有办法告诉 python pickle 始终调用构造函数而不是从未初始化的对象开始?

最佳答案

Unpickling 将始终创建一个实例,而不调用 __init__() 。这是设计使然。在 python 2 中,可以覆盖 __getinitargs__()导致 unpickling 调用 __init__()有一些争论,但有必要在 pickle 时覆盖此方法。这在 python 3 中不再可用。

要达到你想要的效果,手动调用 self.__init__() 不就可以了吗?来自self.__setstate__(state) ?您可以提供 state 中未找到的任何默认参数.

关于Python Pickle 调用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41616472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com