まず、デコレータとは何ですか?
より正式な説明は次のとおりです:
デコレータは、関数とクラスの管理と呼び出しに使用される呼び出し可能なオブジェクトであり、関数デコレータとクラス デコレータに分けられることを意味します。
# この定義関数を少し単純化しました。そうしないと、理解がさらに難しくなります。実際、デコレータを説明できるより一般的な文があります: デコレータはオブジェクトを装飾することです。 . (関数、クラス) がリファクタリングされ、元のオブジェクトを変更せずにオブジェクトを呼び出すときにリファクタリングされた動作を実行できます。ここで混乱して理解できない可能性があります 問題ありません、ゆっくりしましょう! ! ! まず、デコレータの構文を理解する必要があります。def decorator(f): def wrapper(x,y): return x+y return wrapper @decorator def func(x,y): return 1 func(3,4)
この文を注意深く読んで、理解し、覚えておいてください。 上記のコードでは、デコレータは次のとおりです:decorator 返される呼び出し可能なオブジェクトは次のとおりです:wrapper 装飾されたオブジェクトは次のとおりです: func わかりました。最初にこれを実行して、この関数の実行プロセスを確認する必要があります。もちろん、この時点ではまだ疑問が残ります。関数を呼び出すときは何をするか(3,4)で起こった? 現時点: 返された呼び出し可能オブジェクト(ラッパー)は func に与えられていますが、現在の func のコードは
def func(x,y): return x+y
class Decorator: def __init__(self,f): self.func = f def __call__(self,x,y): return self.func(x,y) + 1 @Decorator def func(x,y): return x+y func(3,4) # 你来想想这时候的结果是什么?
Python チュートリアル
」以上がPythonデコレータとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。