問題タブ [single-dispatch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
117 参照

python - 装飾後に単一ディスパッチのオーバーロードを更新する

序文

のようなデコレータで単一のディスパッチを使用していますfunctools.singledispatch

今、条件付きで装飾したいserialize_int場合

それから電話する

ご覧のとおり、「古い」装飾のないバージョンを呼び出します。これは、「古い」オーバーロードを 1 つしか登録serializeしていないために発生し、それが新しい関数オブジェクトであるため、装飾について何も知らないためです。

問題

「ディスパッチャー」関数が変更を取得するようにオーバーロードを変更する方法は?

装飾後に再度登録できるのは理解してserialize_intいますが、コードの重複の問題のようですが、他に方法はありますか?

または、より一般的には、関数オブジェクトをその場で変更することはできますか? 装飾__call__属性は役に立ちません