- 首頁(yè)|
- 網(wǎng)校|
- 焚題庫(kù)|
- APP |
-
微信公眾號(hào)
什么是Python描述符?剛學(xué)習(xí)Python的可能對(duì)它一無(wú)所知,下面就給大家詳細(xì)解釋Python描述符,看明白后就能清楚的知道描述符的實(shí)際作用了。
Python 中,通過(guò)使用描述符,可以讓程序員在引用一個(gè)對(duì)象屬性時(shí)自定義要完成的工作。
本質(zhì)上看,描述符就是一個(gè)類(lèi),只不過(guò)它定義了另一個(gè)類(lèi)中屬性的訪(fǎng)問(wèn)方式。換句話(huà)說(shuō),一個(gè)類(lèi)可以將屬性管理全權(quán)委托給描述符類(lèi)。
描述符是 Python 中復(fù)雜屬性訪(fǎng)問(wèn)的基礎(chǔ),它在內(nèi)部被用于實(shí)現(xiàn) property、方法、類(lèi)方法、靜態(tài)方法和 super 類(lèi)型。
描述符類(lèi)基于以下 3 個(gè)特殊方法,換句話(huà)說(shuō),這 3 個(gè)方法組成了描述符協(xié)議:
__set__(self, obj, type=None):在設(shè)置屬性時(shí)將調(diào)用這一方法(本節(jié)后續(xù)用 setter 表示);
__get__(self, obj, value):在讀取屬性時(shí)將調(diào)用這一方法(本節(jié)后續(xù)用 getter 表示);
__delete__(self, obj):對(duì)屬性調(diào)用 del 時(shí)將調(diào)用這一方法。
其中,實(shí)現(xiàn)了 setter 和 getter 方法的描述符類(lèi)被稱(chēng)為數(shù)據(jù)描述符;反之,如果只實(shí)現(xiàn)了 getter 方法,則稱(chēng)為非數(shù)據(jù)描述符。
實(shí)際上,在每次查找屬性時(shí),描述符協(xié)議中的方法都由類(lèi)對(duì)象的特殊方法 __getattribute__() 調(diào)用(注意不要和 __getattr__() 弄混)。也就是說(shuō),每次使用類(lèi)對(duì)象.屬性(或者 getattr(類(lèi)對(duì)象,屬性值))的調(diào)用方式時(shí),都會(huì)隱式地調(diào)用 __getattribute__(),它會(huì)按照下列順序查找該屬性:
1.驗(yàn)證該屬性是否為類(lèi)實(shí)例對(duì)象的數(shù)據(jù)描述符;
2.如果不是,就查看該屬性是否能在類(lèi)實(shí)例對(duì)象的 __dict__ 中找到;
3.最后,查看該屬性是否為類(lèi)實(shí)例對(duì)象的非數(shù)據(jù)描述符。
初級(jí)會(huì)計(jì)職稱(chēng)中級(jí)會(huì)計(jì)職稱(chēng)經(jīng)濟(jì)師注冊(cè)會(huì)計(jì)師證券從業(yè)銀行從業(yè)會(huì)計(jì)實(shí)操統(tǒng)計(jì)師審計(jì)師高級(jí)會(huì)計(jì)師基金從業(yè)資格稅務(wù)師資產(chǎn)評(píng)估師國(guó)際內(nèi)審師ACCA/CAT價(jià)格鑒證師統(tǒng)計(jì)資格從業(yè)
一級(jí)建造師二級(jí)建造師消防工程師造價(jià)工程師土建職稱(chēng)房地產(chǎn)經(jīng)紀(jì)人公路檢測(cè)工程師建筑八大員注冊(cè)建筑師二級(jí)造價(jià)師監(jiān)理工程師咨詢(xún)工程師房地產(chǎn)估價(jià)師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評(píng)價(jià)土地登記代理公路造價(jià)師公路監(jiān)理師化工工程師暖通工程師給排水工程師計(jì)量工程師
人力資源考試教師資格考試出版專(zhuān)業(yè)資格健康管理師導(dǎo)游考試社會(huì)工作者司法考試職稱(chēng)計(jì)算機(jī)營(yíng)養(yǎng)師心理咨詢(xún)師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級(jí)職稱(chēng)護(hù)士資格證初級(jí)護(hù)師主管護(hù)師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實(shí)踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗(yàn)技師臨床醫(yī)學(xué)理論中醫(yī)理論