ホームページ >バックエンド開発 >Python チュートリアル >Python プログラミング: クラス デコレータとアプリケーションを実装するには?把握すべき重要なポイント

Python プログラミング: クラス デコレータとアプリケーションを実装するには?把握すべき重要なポイント

王林
王林転載
2023-04-12 17:25:071549ブラウズ

Python のデコレータは関数またはクラスのいずれかです。前のセクションでは、関数デコレーターを使用しました。次に、クラス デコレータを定義する方法を学びます。

デコレータとして機能するカスタム クラスを定義します。関数がクラスで修飾/変更されると、関数はそのクラスのインスタンスになります。調べてみましょう:

Python プログラミング: クラス デコレータとアプリケーションを実装するには?把握すべき重要なポイント

上に示したように、単純なクラス デコレータを作成しました。デコレータになるクラスには、 __call__() メソッドを実装する必要があります。 __call__() メソッドは、関数デコレーターのラッパー関数と同じように機能します。

ここで、このクラスを使用して関数を装飾してみましょう:

Python プログラミング: クラス デコレータとアプリケーションを実装するには?把握すべき重要なポイント

プログラムを実行すると出力は次のようになります:

Python プログラミング: クラス デコレータとアプリケーションを実装するには?把握すべき重要なポイント

*args および **kwargs パラメーターを使用したクラス デコレーター

クラス デコレーターが *args および **kwargs をパラメーターとして使用するには、これらのパラメーターを使用して __call__ を実装する必要があります。 () メソッドを作成し、変更した関数に渡します。一般的な表現方法は次のとおりです。

Python プログラミング: クラス デコレータとアプリケーションを実装するには?把握すべき重要なポイント

上記のコードでは、クラス デコレータの __call__() メソッドは *args および **kwargs パラメータを受け入れます。コード行では、call メソッドがそれらを装飾関数 self.func(*args,**kwargs) に渡します。

ここで、このクラス デコレータを使用して関数を装飾します。

Python プログラミング: クラス デコレータとアプリケーションを実装するには?把握すべき重要なポイント

クラス デコレーション デコレーション関数

プログラムを実行した出力結果は次のとおりです。次のようなものです。 :

Hello Solo Cui

return ステートメントを含むクラス デコレータ

関数デコレータのラッパー関数では、次のことができることを思い出してください。 use return キーワードは装飾された関数を返します。ここでも同じことを __call__ メソッド内で行います。

Python プログラミング: クラス デコレータとアプリケーションを実装するには?把握すべき重要なポイント

結果を返すクラス デコレータ

プログラムを実行した出力結果は次のとおりです。

TRACY CUI

上記のように、__call__ メソッドで変更された関数を返します。

return self.func(*args,**args)

これまでのところ、 Pythonについて 以上でデコレータの紹介は終わりです。

以上がPython プログラミング: クラス デコレータとアプリケーションを実装するには?把握すべき重要なポイントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。