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

2022-09-26 21:36:14 字數 1002 閱讀 5180

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

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

其中,實現了setter和getter方www.cppcns.com程式設計客棧法的描述符被稱為資料描述符,反之,如果只實現了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"

10updating var "x"

retrieving var "x"

205如果乙個類的某個屬性有資料描述符,那麼每次查詢這個屬性時,都會呼叫描述符的__get__()方法,並返回它的值;同樣,每次在對屬性賦值時,也會呼叫__set__()方法。

當每次使用del類物件.屬性(或者delattr(類物件,屬性))語句時,都會呼叫該方法。

本文標題: 通過例項解析python描述符原理作用

本文位址: /jiaoben/python/299033.html

python 描述 python描述符

在python中,訪問乙個屬性的優先順序順序按照如下順序 1.類屬性2.資料描述符3.例項屬性4.非資料描述符5.getattr 方法。描述符,用一句話來說,就是將某種特殊型別的類的例項指派給另乙個類的屬性 注意 這裡是類屬性,而不是物件屬性 而這種特殊型別的類就是實現了 get set delet...

全域性描述符表解析

全域性描述符表gdt是為了實現32位模式的分段,跟16位模式的分段是乙個概念。只是實現方式不一樣。在32位中,描述乙個段需要以下資訊 我們用64位 8位元組 來標識乙個段的基位址,及其屬性。可是cpu並沒有乙個這樣的64位段暫存器,我們能是用的依然只有16位的段暫存器。而且由於cpu設計缺陷,段暫存...

python 描述符基本

相關資料 python的描述符 下一站,我等你 描述符的本質類 python為開發者提供了乙個非常強大的功能 描述符。那什麼是描述符呢?通過檢視python的官方文件,我們知道把實現了 get set 和 delete 中的其中任意一種方法的類稱之為描述符,描述符的本質是新式類,並且被 的類 即應用...