デコレータの作成
という別の関数を受け取るデコレータ関数を作成します。 「ラップされた」関数として、引数:
def my_decorator(func): # Code to execute before calling the wrapped function print("Before the function runs") # Call the wrapped function and store its return value result = func() # Code to execute after calling the wrapped function print("After the function runs") # Return the result of the wrapped function return result # Example of a decorator in action @my_decorator def say_hello(): print("Hello, world!")
デコレータの連鎖
同じ関数に複数のデコレータを適用するには @ 演算子を使用します:
@my_decorator @another_decorator def chained_function(): print("This function is doubly decorated")
引数を持つデコレータ
デコレータに次のことを許可します。引数を受け入れる:
def decorator_with_arg(arg1, arg2): def decorator(func): # Use the decorator arguments to modify the wrapped function's behavior func.arg1 = arg1 func.arg2 = arg2 return func # Example of a decorator with arguments @decorator_with_arg("foo", "bar") def my_function(): print("Args:", my_function.arg1, my_function.arg2)
クラス メソッドのデコレータ
クラス内のメソッドにデコレータを使用する:
class MyClass: @classmethod def my_class_method(cls): print("This is a class method")
練習:デコレータの装飾
デコレータを作成するこれにより、他のデコレータが引数を受け入れるようになります:
def decorator_with_args(decorator_to_enhance): def decorator_maker(*args, **kwargs): def decorator_wrapper(func): # Wrap the original decorator and pass the arguments return decorator_to_enhance(func, *args, **kwargs) return decorator_wrapper # Example of a decorated decorator @decorator_with_args def decorated_decorator(func, *args, **kwargs): print("Args:", args, kwargs) return func @decorated_decorator(10, 20, name="John") def my_function(): print("Decorated function")
ベスト プラクティス
使用例
タスクにデコレータを使用する例:
以上がPython でデコレータを効果的に使用してチェーンする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。