別のメソッドに引数を挿入するメソッド(set
)を作成したいとします(set_result
)。私はpartial
を以下のように使って試しました。クラス定義で別のメソッドをラップする
from functools import partial
class MyClass(MyClassParent):
set = partial(MyClassParent.set_result, None)
しかし、これは機能しません。私はこれが暗黙のself
が渡されていないことを意味想定し
TypeError: set_result() takes exactly 2 arguments (1 given)
:MyClass
のインスタンスにset
を呼び出すとき、私はこのエラーを取得します。私はこのようなset
を記述する場合、それは動作します:
def __init__(self, *args, **kwds):
super().__init__(*args, **kwds)
self.set = partial(self.set_result, None)
どのように私は前者の方法を使用してset_result
をラップすることができますか?
2番目のバージョンで何が問題になっていますか?それはこれを行う正しい方法です。 – Marcin
'set_result'の署名は何ですか? – katrielalex
@Marcin:なぜ私はそれをより簡潔にバインドすることができないのか、そして「実行時」のオーバヘッドが少ないのか分かりません。私がpartialを使ってラッパーを行うことができるなら、Cから 'wrapper 'が実行されます。 –