什麼是描述符
描述符就是乙個新式類,我們可以使用描述符去實現一些新的類或者例項,在這個類裡邊至少要實現__get__()
,__set__()
,__delete__()
中的乙個,它還分為資料描述符和非資料描述符,他們的優先順序是不一樣的。描述符它就是用來**其他類的屬性。
先初體驗一下
class
str(
object):
def__get__
(self, instance, owner)
:print
('__get__ is called'
)print
('instance:%s'
% instance)
print
('owner:%s'
% owner)
def__set__
(self, instance, value)
:print
('__set__ is called'
)print
('instance:%s'
% instance)
print
('value:%s'
% value)
def__delete__
(self, instance)
:print
('__del__ is called'
)class
people
(object):
name = str(
)# **
def__init__
(self, name, age)
: self.name = name
self.age = age
print
('__init__ is called'
)p = people(
'suzijian',19
)# call __set__,__init__
p.name =
'zijian'
# call __set__
#print(p.name) # 呼叫__get__
print
(p.__dict__)
# call __get__
輸出
__set__ is called
instance:
<__main__.people object at 0x000002510212f6c8
>
value:suzijian
__init__ is called
__set__ is called
instance:
<__main__.people object at 0x000002510212f6c8
>
value:zijian
分析結果知道列印__dict__的時候name屬性沒有被列印出來,這是因為name屬性不是__init__方法初始化的,而是被描述符**了。
class
foo:
#在python3中foo是新式類,它實現了三種方法,這個類就被稱作乙個描述符
def__get__
(self, instance, owner):#
pass
def__set__
(self, instance, value)
:pass
def__delete__
(self, instance)
:pass
python 描述 python描述符
在python中,訪問乙個屬性的優先順序順序按照如下順序 1.類屬性2.資料描述符3.例項屬性4.非資料描述符5.getattr 方法。描述符,用一句話來說,就是將某種特殊型別的類的例項指派給另乙個類的屬性 注意 這裡是類屬性,而不是物件屬性 而這種特殊型別的類就是實現了 get set delet...
檔案描述符的理解
核心 kernel 利用檔案描述符 file descriptor 來訪問檔案。檔案描述符是非負整數。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。1.程序級的檔案描述符表 2.系統級的開啟檔案描述符表 3.檔案系統的i node表。檔案描述符是...
python 描述符基本
相關資料 python的描述符 下一站,我等你 描述符的本質類 python為開發者提供了乙個非常強大的功能 描述符。那什麼是描述符呢?通過檢視python的官方文件,我們知道把實現了 get set 和 delete 中的其中任意一種方法的類稱之為描述符,描述符的本質是新式類,並且被 的類 即應用...