__reduce__と__reduce_ex__の違いは何ですか?
質問
これらのメソッドはpickle / unpickling用であり、reduce組み込み関数とは関係がないことを理解していますが、2の違いは何ですか、なぜ両方が必要なのですか?
解決
提供されている場合、酸洗時に
__ reduce __()
はnoで呼び出されます 引数、および 文字列またはタプル。
一方、
時々知っていると便利です 実装時のプロトコルバージョン
__ reduce __
。これは というメソッドを実装する の代わりに__ reduce_ex __
__ reduce __
。__ reduce_ex __
、それが 存在し、優先的に呼び出されます__ reduce __
(引き続き提供できます__ reduce __
後方へ 互換性)。__ reduce_ex __
メソッドは単一で呼び出されます 整数引数、プロトコル バージョン。
握りしめながら、ガイドは次のように述べていますこれはクリーンアップできる領域です。
他のヒント
__ reduce_ex __
は、 __ reduce __
が本来あるべきだったが、決してなっていないものです。 __ reduce_ex __
は __ reduce __
と同様に機能しますが、pickleプロトコルは渡されます。
所属していません StackOverflow