デコレータ入門
CoddyのPythonジャーニー「Object Oriented Programming」セクションの一部 — レッスン 9/64。
デコレータは、元のコードを変更することなく、関数やクラスを修正または拡張するための手法です。これらは @ 記号を使用します。
シンプルなデコレータの例を次に示します。
def my_decorator(func):
def wrapper():
print("Before function runs")
func()
print("After function runs")
return wrapper@を使用してデコレータを適用します:
@my_decorator
def say_hello():
print("Hello!")デコレートされた関数を呼び出します:
say_hello()出力:
Before function runs
Hello!
After function runs@my_decorator は、次のように書くのと同等です:
def say_hello():
print("Hello!")
say_hello = my_decorator(say_hello)しかし、@ 構文の方がずっとすっきりと見え、読みやすいです。
重要なポイント:デコレータは、元の関数のコードを変更せずに、関数をラップして機能を追加します。
チートシート
デコレータは、@ 記号を使用して、元のコードを変更することなく関数を修正または拡張します。
基本的なデコレータの構造:
def my_decorator(func):
def wrapper():
print("Before function runs")
func()
print("After function runs")
return wrapper@ を使用してデコレータを適用します:
@my_decorator
def say_hello():
print("Hello!")@my_decorator 構文は、以下と同等です:
say_hello = my_decorator(say_hello)自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。