首頁 >後端開發 >Python教學 >如何使用「property()」裝飾器以 Python 方式實作 Getter 和 Setter?

如何使用「property()」裝飾器以 Python 方式實作 Getter 和 Setter?

Patricia Arquette
Patricia Arquette原創
2024-12-24 02:00:14697瀏覽

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

Python 的 Getter 和 Setter 方法

在 Python 中,有多種方法來實現物件屬性的 getter 和 setter。在上述方法中,Pythonic 解決方案涉及利用 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 屬性定義 getter方法,在傳回 _x 的值之前列印「呼叫 x 的 getter」。
  • x.setter 部分定義了 setter 方法,在設定 _x 的值之前列印「setter of x called」。
  • x.deleter 部分定義了 deleter 方法,在刪除之前列印「deleter of x called」 _x 屬性。

要使用x 屬性,只需像常規訪問一樣訪問它屬性:

c = C()
c.x = 'foo'  # setter called
foo = c.x    # getter called
del c.x      # deleter called

這種方法提供了一種乾淨且可擴展的方式來實現getter 和setter,同時遵守Pythonic 約定。

以上是如何使用「property()」裝飾器以 Python 方式實作 Getter 和 Setter?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn