デコレータの書き方

Pythonでデコレータを書く際には、通常の関数を作成し、それを他の関数やメソッドに適用します。デコレータは関数のラッパー(wrapper)を作成し、元の関数をラップ(decorate)します。以下は、デコレータの書き方に関する基本的な手順です。

  1. デコレータ関数の作成:
    デコレータは通常、デコレートする対象の関数を受け取る関数です。デコレータ関数は、内部でラッパー関数を定義し、それを返します。

    python
    def my_decorator(func): def wrapper(): # 何かの前処理 func() # 何かの後処理 return wrapper
  2. デコレートする関数にデコレータを適用:
    デコレータを使用する関数に@記号を使ってデコレータを適用します。

    python
    @my_decorator def my_function(): # 本来の処理

    このようにデコレータを適用することで、my_functionmy_decoratorでラップされたラッパー関数を実行するようになります。

  3. デコレータを呼び出す:
    デコレータは関数であるため、通常の関数と同様に呼び出すことができます。デコレータ関数を呼び出すことで、デコレートされた関数が実行されます。

    python
    my_function()

完全な例を示します:

python
def my_decorator(func): def wrapper(): print("前処理") func() print("後処理") return wrapper @my_decorator def say_hello(): print("Hello!") say_hello()

このコードでは、say_hello関数がmy_decoratorデコレータによってラップされ、my_decoratorの前処理と後処理がsay_helloの本来の処理の前後に実行されます。結果は以下のようになります:


前処理 Hello! 後処理

このように、デコレータを使用することで、関数やメソッドの機能を追加または変更できます。