使用Python描述項管理屬性訪問

來源:互聯網
上載者:User
關鍵字 PYTHON

Python 2.2 引進了 Python 描述項,同時還引進了一些新的樣式類,但是它們並沒有得到廣泛使用。 Python 描述項是一種創建託管屬性的方法。 除了其他優點外,託管屬性還用於保護屬性不受修改,或HTTP://www.aliyun.com/zixun/aggregation/18862.html">自動更新某個依賴屬性的值。

描述項增加了對 Python 的理解,改善了編碼技能。 本文介紹了描述項協定,並演示了如何創建和使用描述項。

描述項協定

Python 描述項協定 只是一種在模型中引用屬性時指定將要發生事件的方法。 它允許程式設計人員輕鬆、有效地管理屬性訪問:

set get delete

在其他程式設計語言中,描述項被稱作 setter 和 getter,而公共函數用於獲得 (Get) 和設置 (Set) 一個私有變數。 Python 沒有私有變數的概念,而描述項協定可以作為一種 Python 的方式來實現與私有變數類似的功能。

總的來說,描述項就是一個具有綁定行為的物件屬性,其屬性訪問將由描述項協定中的方法覆蓋。 這些方法為 __get__、__set__ 和 __delete__。 如果這些方法中的任何一個針對某個物件定義,那麼它就被認為是一個描述項。 通過 清單 1 進一步瞭解這些方法。

清單 1. 描述項方法

__get__(self, instance, owner)__set__(self, instance, value)__delete__(self, instance)

其中:

__get__ 用於訪問屬性。 它返回屬性的值,或者在所請求的屬性不存在的情況下出現 AttributeError 異常。

__set__ 將在屬性分配操作中調用。 不會返回任何內容。

__delete__ 控制刪除操作。 不會返回內容。

需要注意,描述項被分配給一個類,而不是實例。 修改此類,會覆蓋或刪除描述項本身,而不是觸發它的代碼。

需要使用描述項的情況

考慮 email 屬性。 在向該屬性分配值之前,需要對郵件格式進行檢驗。 該描述項允許通過一個正則運算式處理電子郵件,然後對格式進行檢驗後將它分配給一個屬性。

在其他許多情況下,Python 協定描述項控制對屬性的訪問,如保護 name 屬性。

創建描述項

您可以通過許多方式創建描述項:

創建一個類並覆蓋任意一個描述項方法:__set__、__ get__ 和 __delete__。 當需要某個描述項跨多個不同的類和屬性,例如類型驗證,則使用該方法。 使用屬性類型,這種方法可以更加簡單、靈活地創建描述項。 使用屬性描述項,它結合了屬性類型方法和 Python 描述項。

以下示例在其操作方面均相似。 不同之處在于實現方法。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.