ホームページ >バックエンド開発 >Python チュートリアル >クラスフィールドをクラスメソッドのデコレータに引数として渡すにはどうすればよいですか?
自己引数によるクラス メソッドの装飾
クラス フィールドをクラス メソッドのデコレータに引数として渡すには、次のアクセスが必要です。クラス定義時ではなく、実行時のフィールド。方法は次のとおりです:
1.メソッドの引数をインターセプト
デコレーターは、ラッパー関数を使用してメソッドの引数をインターセプトできます。ラッパーへの最初の引数はインスタンス (self) になります。
<code class="python">def check_authorization(f): def wrapper(*args): print(args[0].url) return f(*args) return wrapper</code>
2. Getattr を使用してフィールドに動的にアクセスします
または、フィールド名を文字列としてデコレータに渡し、getattr を使用してアクセスすることもできます:
<code class="python">def check_authorization(attribute): def _check_authorization(f): def wrapper(self, *args): print(getattr(self, attribute)) return f(self, *args) return wrapper return _check_authorization</code>
このメソッドを使用すると、デコレータは
例
<code class="python">@check_authorization("url") def get(self): do_work()</code>
この例では、デコレータは実行時にインスタンスの url 属性にアクセスします。
以上がクラスフィールドをクラスメソッドのデコレータに引数として渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。