そのため、ID に基づいてインスタンスを記憶するクラスがあります。そのようなオブジェクトを unpickle するとき、私が扱いたい 2 つのケースがあります。
- その ID を持つ他のインスタンスは存在しないため、新しいインスタンスが生成さ
__setstate__
れ、正常に呼び出されます。 - その ID の別のインスタンスが存在する場合、そのオブジェクトが返されるので、それを呼び出さないようにしたいと考えて
__setstate__
います。
このクラス定義を見てください。
現在、回避策として評価される属性のみを更新していますFalse
。
これを解決するための 2 つの一般的な戦略を考えることができます。
- この前の回答のように、結果で呼び出される別の関数を定義し、
__getnewargs__
実行するかどうかを示す属性を添付__setstate__
できます。 __call__
クラスのメソッドが pickle 内から呼び出されたかどうかがわかれば、同じことができます。
酸洗い機械にさらに干渉する可能性があるかどうかはわかりません。また、unpickler をサブクラス化したくありません。
考え、推奨事項、まったく異なる解決策はありますか? ありがとうございました。