私は現在、デコレータクラスで特定のブール値がTrueに設定されている場合に、関数のアノテーションをチェックすることになっているデコレートされた関数を使用しています。私が少し混乱しているのは、デコレータ関数の__call__
メソッドヘッダーです。
def __call__(self, *args, **kargs):
およびそのパラメータリスト。
そのパラメータ*args
と**kargs
が関数に提供される引数に使用されることを理解していますが、私が扱っている問題では、元の関数(という名前のデコレータクラスから作成されたインスタンスオブジェクトの属性)を呼び出す必要があります_f
。
_f
装飾された関数に提供された引数を使用して呼び出すにはどうすればよいですか?args
/kargs
が空であるかどうかを確認し、空でないパラメーターに対してself._f(args)
/self._f(kargs)
を呼び出す必要がありますか?
メソッドを装飾する場合:
class Foo:
@someDecorator
def my_method(self, x, y):
...
それはまだ実際には方法ではありません。それは単なる機能です。デコレータの内部では、次のように扱います。
def someDecorator(f):
def _(*args, **kwargs):
...
return f(*args, **kwargs)
return _
ときに_
呼び出され、self
中に含まれる*args
引数。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加