ホームページ > バックエンド開発 > Python チュートリアル > Python のデコレータとクラス プロパティ

Python のデコレータとクラス プロパティ

Barbara Streisand
リリース: 2024-12-24 15:49:12
オリジナル
678 人が閲覧しました

この投稿では、関数デコレーターの一般的な使用法、特にクラス プロパティ デコレーターと、デコレーターとクラス メソッドを直接使用する場合の違いについて説明します。

使用法

Decorators & Class Property in Python見覚えがありますね?
ユビキタスな @propery デコレーターはどこにでもありますが、実際にはどのように機能するのでしょうか?
@property を使用することと、property() クラス メソッドを直接使用することの違いは何ですか?

Decorators & Class Property in Python

デコレータはどのように機能するのでしょうか?

これは標準のデコレータ関数の例です。
Decorators & Class Property in Python
Python の内部では、デコレータを呼び出す関数 (つまり、外側の関数) は、デコレータを呼び出して外側の関数をパラメータとして渡すことによって、追加のコードでラップされます。デコレーターは、すべての新しいロジックを含むラップされた関数を作成し、それを外部関数の値として返します。

プロパティメソッドを理解する

クラス プロパティ メソッドは、クラス属性のゲッター、セッター、デリーター メソッドを定義し、それらをクラスのデフォルトのマジック メソッドにバインドできる組み込みの Python 関数です。

def get_my_value(self):
    return self._my_value
my_value = property(get_my_value)
ログイン後にコピー

は Python コンパイラーによって
として理解されます

def __get__(self,obj):
    return self.fget(obj)
ログイン後にコピー

基本的に、property() メソッドは、属性名と基礎となるデータの間のプロキシとして機能するオブジェクトを作成します。したがって、デフォルトのマジック メソッドでは不可能なカスタム動作や検証ロジックを追加できるようになります。

@property デコレータ

上で見たように、プロパティ メソッドを使用すると、デフォルトのマジック メソッドを上書きし、その機能を拡張できます。また、デコレーターが新しい関数内で関数ロジックをラップする方法も示しました。 @property デコレーターを使用してゲッター、セッター、またはデリーター メソッドが呼び出される場合、Python はそれを内部で property() メソッドの呼び出しに変換し、メソッドをデフォルトのマジック メソッドを上書きできる関数にラップするプロパティ オブジェクトを作成します。

デコレータの特典

@property デコレータまたは property() メソッドの使用が同等であることを示しましたが、デコレータの方が簡単に使用でき、クラス内のコードが読みやすくなります。したがって、これはベスト プラクティスおよびコーディング規約とみなされ、特定のシナリオ要件がない限り、デコレーターを使用する必要があります。

クレジット:

https://www.geeksforgeeks.org/python-property-decorator-property/
ブログ投稿のヘッダー画像ジェネレーター
コードスニペットメーカー

以上がPython のデコレータとクラス プロパティの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート