欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

通過實例解析python描述符原理作用

 更新時間:2020年01月22日 09:27:08   投稿:yaominghui  
這篇文章主要介紹了通過實例解析python描述符原理作用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

這篇文章主要介紹了通過實例解析python描述符原理作用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

本質(zhì)上看,描述符是一個類,只不過它定義了另一個類中屬性的訪問方式。換句話說,一個類可以將屬性管理全權(quán)委托給描述符類。

描述符類基于以下三種特殊方法,換句話說,這三種方法組成了描述符協(xié)議:

  • __set__(self, obj, type = None): 在設(shè)置屬性時,將調(diào)用這一方法。
  • __get__(self, obj, value): 在讀取屬性時將調(diào)用這一方法。
  • __delete__(self, obj): 對屬性調(diào)用del時將調(diào)用這一方法。

其中,實現(xiàn)了setter和getter方法的描述符被稱為數(shù)據(jù)描述符,反之,如果只實現(xiàn)了getter方法,則稱為非數(shù)據(jù)描述符。

#描述符類
class revealAccess:
  def __init__(self, initval = None, name = 'var'):
    self.val = initval
    self.name = name
  def __get__(self, obj, objtype):
    print("Retrieving", self.name)
    return self.val
  def __set__(self, obj, val):
    print("updating", self.name)
    self.val = val

class myClass:
  x = revelAccess(10, 'var "x"')
  y = 5
m = myClass()
print(m.x)
m.x = 20
print(m.x)
print(m.y)
Retrieving var "x"
10
updating var "x"
Retrieving var "x"
20
5

如果一個類的某個屬性有數(shù)據(jù)描述符,那么每次查找這個屬性時,都會調(diào)用描述符的__get__()方法,并返回它的值;同樣,每次在對屬性賦值時,也會調(diào)用__set__()方法。
當每次使用del類對象.屬性(或者delattr(類對象,屬性))語句時,都會調(diào)用該方法。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python logging 日志輪轉(zhuǎn)文件不刪除問題的解決方法

    python logging 日志輪轉(zhuǎn)文件不刪除問題的解決方法

    最近在維護項目的python項目代碼,項目使用了 python 的日志模塊 logging, 設(shè)定了保存的日志數(shù)目, 不過沒有生效,還要通過contab定時清理數(shù)據(jù)
    2016-08-08
  • python中pylint使用方法(pylint代碼檢查)

    python中pylint使用方法(pylint代碼檢查)

    Pylint 提供了簡單的方式來分析 Python 代碼,其高可配置性很容易使一個部門的人員使用統(tǒng)一的代碼風格。 本文將通過理論介紹和示例分析闡述如何 Pylint 來規(guī)范 Python 代碼
    2018-04-04
  • PyCharm代碼整體縮進,反向縮進的方法

    PyCharm代碼整體縮進,反向縮進的方法

    今天小編就為大家分享一篇PyCharm代碼整體縮進,反向縮進的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 給ubuntu18安裝python3.7的詳細教程

    給ubuntu18安裝python3.7的詳細教程

    這篇文章主要介紹了給ubuntu18安裝python3.7的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • python中超簡單的字符分割算法記錄(車牌識別、儀表識別等)

    python中超簡單的字符分割算法記錄(車牌識別、儀表識別等)

    這篇文章主要給大家介紹了關(guān)于python中超簡單的字符分割算法記錄,如車牌識別、儀表識別等,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-09-09
  • python?moviepy?的用法入門篇

    python?moviepy?的用法入門篇

    MoviePy(全套文件)是一個用于視頻編輯Python庫:切割、拼接、標題插入,視頻合成(即非線性編輯),視頻處理和自定義效果的創(chuàng)造,本文給大家介紹python?moviepy?的用法詳解,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • Python爬蟲如何應(yīng)對Cloudflare郵箱加密

    Python爬蟲如何應(yīng)對Cloudflare郵箱加密

    這篇文章主要介紹了Python爬蟲如何應(yīng)對Cloudflare郵箱加密,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Web自動化之Selenium常用操作方法大全

    Web自動化之Selenium常用操作方法大全

    Selenium是一種自動化測試工具,可以用于測試Web應(yīng)用程序,它提供了一組用于自動化Web瀏覽器進行測試的API,下面這篇文章主要給大家介紹了關(guān)于Web自動化之Selenium常用操作方法的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Python實現(xiàn)的tcp端口檢測操作示例

    Python實現(xiàn)的tcp端口檢測操作示例

    這篇文章主要介紹了Python實現(xiàn)的tcp端口檢測操作,結(jié)合實例形式分析了Python使用socket模塊實現(xiàn)tcp端口檢測功能的相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • win8下python3.4安裝和環(huán)境配置圖文教程

    win8下python3.4安裝和環(huán)境配置圖文教程

    這篇文章主要為大家詳細介紹了win8下python3.4安裝和環(huán)境配置圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評論