デコレータはパラメータを受け取ることができますか?
コードは引数 (insurance_mode) を指定してデコレータ (@execute_complete_reservation) を使用しようとしますが、失敗します。 。これは、パラメータを持つデコレータの構文が異なるために発生します。
改訂されたデコレータ構文:
パラメータを持つデコレータは、関数を引数として受け取り、別の関数を返す関数を返します。関数。基本的には通常のデコレータを返します。
def decorator_factory(argument): def decorator(function): def wrapper(*args, **kwargs): # Additional code function(*args, **kwargs) # More additional code return wrapper return decorator
デコレータの適用:
この構文を使用すると、元のコードを次のように修正できます:
@execute_complete_reservation_factory(True) def test_booking_gta_object(self): self.test_select_gta_object()
この改訂されたコードでは、@execute_complete_reservation_factory はファクトリ関数です。実際のテスト関数を引数として受け取るデコレータを返します。
以上がPython デコレータはパラメータを受け入れることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。