Python のデコレータは関数またはクラスのいずれかです。前のセクションでは、関数デコレーターを使用しました。次に、クラス デコレータを定義する方法を学びます。
デコレータとして機能するカスタム クラスを定義します。関数がクラスで修飾/変更されると、関数はそのクラスのインスタンスになります。調べてみましょう:
上に示したように、単純なクラス デコレータを作成しました。デコレータになるクラスには、 __call__() メソッドを実装する必要があります。 __call__() メソッドは、関数デコレーターのラッパー関数と同じように機能します。
ここで、このクラスを使用して関数を装飾してみましょう:
プログラムを実行すると出力は次のようになります:
クラス デコレーターが *args および **kwargs をパラメーターとして使用するには、これらのパラメーターを使用して __call__ を実装する必要があります。 () メソッドを作成し、変更した関数に渡します。一般的な表現方法は次のとおりです。
上記のコードでは、クラス デコレータの __call__() メソッドは *args および **kwargs パラメータを受け入れます。コード行では、call メソッドがそれらを装飾関数 self.func(*args,**kwargs) に渡します。
ここで、このクラス デコレータを使用して関数を装飾します。
クラス デコレーション デコレーション関数
プログラムを実行した出力結果は次のとおりです。次のようなものです。 :
Hello Solo Cui
関数デコレータのラッパー関数では、次のことができることを思い出してください。 use return キーワードは装飾された関数を返します。ここでも同じことを __call__ メソッド内で行います。
結果を返すクラス デコレータ
プログラムを実行した出力結果は次のとおりです。
TRACY CUI
上記のように、__call__ メソッドで変更された関数を返します。
return self.func(*args,**args)
これまでのところ、 Pythonについて 以上でデコレータの紹介は終わりです。
以上がPython プログラミング: クラス デコレータとアプリケーションを実装するには?把握すべき重要なポイントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。