ホームページ > バックエンド開発 > Python チュートリアル > `property()` デコレーターを使用してゲッターとセッターを Python で実装するにはどうすればよいですか?

`property()` デコレーターを使用してゲッターとセッターを Python で実装するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-24 02:00:14
オリジナル
690 人が閲覧しました

How Can I Pythonically Implement Getters and Setters Using the `property()` Decorator?

ゲッターとセッターへの Python 的アプローチ

Python では、オブジェクト属性のゲッターとセッターを実装するさまざまな方法があります。前述のアプローチのうち、Python ソリューションには、Python の組み込み property() デコレーターの活用が含まれます。

property() デコレーターを使用すると、次のようなプロパティ メソッドを作成できます。属性のように機能しますが、入力検証やキャッシュなどの追加の動作を行うこともできます。以下に例を示します:

class C(object):
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        print("getter of x called")
        return self._x

    @x.setter
    def x(self, value):
        print("setter of x called")
        self._x = value

    @x.deleter
    def x(self):
        print("deleter of x called")
        del self._x
ログイン後にコピー

この例では:

  • __init__() メソッドは _x 属性を None として初期化します。
  • x プロパティはゲッターを定義します。メソッド。値を返す前に「呼び出された x のゲッター」を出力します。 _x.
  • x.setter 部分は、_x の値を設定する前に「呼び出された x のセッター」を出力する setter メソッドを定義します。
  • x.deleter 部分は、deleter メソッドを定義します。 _x 属性を削除する前に、「呼び出された x の削除者」を出力します。

x を使用するにはプロパティを使用するには、通常の属性のようにアクセスするだけです:

c = C()
c.x = 'foo'  # setter called
foo = c.x    # getter called
del c.x      # deleter called
ログイン後にコピー

このアプローチは、Python の規約に準拠しながらゲッターとセッターを実装するクリーンで拡張可能な方法を提供します。

以上が`property()` デコレーターを使用してゲッターとセッターを Python で実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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