2017-01-12 6 views
0

Pythonのpickleシリアライザを使用して欠損値のデフォルトを提供したいと思います。クラスは単純なので、デフォルトはクラスの__init__メソッドに自然に存在します。Python Pickleコールコンストラクタ

pickle documentationからは、__getnewargs__があることがわかります。しかし、これは「酸洗い」の前に__getnewargs__が存在する場合にのみ機能します。

Python pickleに、初期化されていないオブジェクトではなく常にコンストラクタを呼び出す方法はありますか?

答えて

1

ピン割り当てを解除すると、常に__init__()を呼び出さずにインスタンスが作成されます。これは設計によるものです。 Python 2では、を呼び出すためにunpicklingを呼び出すために__getinitargs__()をオーバーライドすることができましたが、このメソッドをpickling時にオーバーライドしておく必要がありました。これはPython 3ではもう利用できません。

self.__init__()self.__setstate__(state)から手動で呼び出すだけでは十分ではないでしょうか? stateにはないデフォルトの引数を指定できます。

関連する問題