0

そのため、ID に基づいてインスタンスを記憶するクラスがあります。そのようなオブジェクトを unpickle するとき、私が扱いたい 2 つのケースがあります。

  1. その ID を持つ他のインスタンスは存在しないため、新しいインスタンスが生成さ__setstate__れ、正常に呼び出されます。
  2. その ID の別のインスタンスが存在する場合、そのオブジェクトが返されるので、それを呼び出さないようにしたいと考えて__setstate__います。

このクラス定義を見てください。

現在、回避策として評価される属性のみを更新していますFalse

これを解決するための 2 つの一般的な戦略を考えることができます。

  1. この前の回答のように、結果で呼び出される別の関数を定義し、__getnewargs__実行するかどうかを示す属性を添付__setstate__できます。
  2. __call__クラスのメソッドが pickle 内から呼び出されたかどうかがわかれば、同じことができます。

酸洗い機械にさらに干渉する可能性があるかどうかはわかりません。また、unpickler をサブクラス化したくありません。

考え、推奨事項、まったく異なる解決策はありますか? ありがとうございました。

4

0 に答える 0