19

これらの方法はピクルス/アンピクルス用であり、reduce組み込み関数とは関係がないことを理解していますが、2つの違いは何ですか?なぜ両方が必要なのですか?

4

2 に答える 2

31

ドキュメントによると

提供されている場合、ピクルス時 __reduce__()に引数なしで呼び出され、文字列またはタプルのいずれかを返す必要があります。

一方で、

を実装するときに、プロトコルのバージョンを知っておくと便利な場合があります __reduce____reduce_ex__これは、の代わりに という名前のメソッドを実装することで実行できます __reduce____reduce_ex__、存在する場合は、優先的に呼び出されます (下位互換性を__reduce__提供することもできます )。__reduce__この__reduce_ex__ メソッドは、プロトコルバージョンという単一の整数引数を使用して呼び出されます。

握りしめている手で、Guidoはこれがきれいにされることができる領域であると言います。

于 2008-09-29T19:41:37.243 に答える
9

__reduce_ex__ある__reduce__べきだったが、決してならないものです。 __reduce_ex__のように動作__reduce__しますが、pickleプロトコルが渡されます。

于 2008-09-29T19:42:58.537 に答える