Menu
Coddy logo textTech

デコレータ入門

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)

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Object Oriented Programmingのすべてのレッスン