溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-07-24 09:19:36 來源:億速云 閱讀:159 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“如何通過實例解析python描述符原理作用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何通過實例解析python描述符原理作用”這篇文章吧。

描述符是一個類,只不過它定義了另一個類中屬性的訪問方式。換句話說,一個類可以將屬性管理全權委托給描述符類。

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

  • __set__(self, obj, type = None): 在設置屬性時,將調用這一方法。

  • __get__(self, obj, value): 在讀取屬性時將調用這一方法。

  • __delete__(self, obj): 對屬性調用del時將調用這一方法。

其中,實現了setter和getter方法的描述符被稱為數據描述符,反之,如果只實現了getter方法,則稱為非數據描述符。

#描述符類
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

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

以上是“如何通過實例解析python描述符原理作用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女