1、 定義一個(gè)特殊的 __slots__ 變量,來限制該class實(shí)例能添加的屬性
專注于為中小企業(yè)提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)廣宗免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了數(shù)千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
2、 內(nèi)置的 @property(關(guān)鍵字) 裝飾器就是負(fù)責(zé)把一個(gè)方法變成屬性調(diào)用的。@property.setter(這里的property是類里面的屬性名)負(fù)責(zé)把一個(gè)setter方法變成屬性賦值。
3、 __str__(),__repr__(),__iter__(),__next__(),__getitem__(),__setitem__(),__delitem__(),__getattr__(),__call__()
處理屬性的重要屬性和函數(shù)
1、特殊屬性
__class__:對(duì)象所屬類的引用(即obj.__class__和type(obj)的作用相同)。Python中的某些特殊方法比如 __getattr__,只在對(duì)象的類中尋找,而不在實(shí)例中尋找。__dict__:一個(gè)映射,存儲(chǔ)對(duì)象或類的可寫屬性。__slots__:類可以定義這個(gè)屬性,限制實(shí)例有哪些屬性。
2、內(nèi)置函數(shù)
dir([object]):列出對(duì)象的大多數(shù)屬性。getattr(object,name[,default]):從object對(duì)象中獲取name字符串對(duì)應(yīng)的屬性。獲取的屬性可能來自對(duì)象所屬的類或超類。hasattr(object,name):若object對(duì)象中存在指定的屬性,或者能以某種方式(如繼承)通過object對(duì)象獲取指定的屬性,返回True。setattr(object,name,value):把object對(duì)象指定屬性的值設(shè)為value,前提是object對(duì)象能接受那個(gè)值。這個(gè)函數(shù)可能會(huì)創(chuàng)建一個(gè)新屬性,或者覆蓋現(xiàn)有的屬性。var([object]):返回object對(duì)象的__dict__屬性。
相關(guān)推薦:《Python視頻教程》
3、特殊方法
__delattr__(self,name):只要使用del語句刪除屬性,就會(huì)調(diào)用這個(gè)方法。__dir__(self):把對(duì)象傳給dir函數(shù)時(shí)調(diào)用,列出屬性。__getattr__(self,name):僅當(dāng)獲取指定的屬性失敗,搜索過obj,Class和超類之后調(diào)用。__getattribute__(self,name):嘗試獲取指定的屬性時(shí)總會(huì)調(diào)用這個(gè)方法。不過尋找的屬性是特殊屬性或特殊方法時(shí)除外。為了防止無限遞歸,__getattribute__方法的實(shí)現(xiàn)要使用super().__getattribute__(obj,name)。__setattr__(self,name,value):嘗試設(shè)置指定的屬性時(shí)總會(huì)調(diào)用這個(gè)方法。點(diǎn)號(hào)和setattr內(nèi)置函數(shù)會(huì)觸發(fā)這個(gè)方法。
相關(guān)推薦:
Python中的屬性和特性是什么
python里的__name__屬性的意思:
1、__name__是一個(gè)變量。前后加了雙下劃線是因?yàn)槭且驗(yàn)檫@是系統(tǒng)定義的名字。普通變量不要使用此方式命名變量。
2、Python有很多模塊,而這些模塊是可以獨(dú)立運(yùn)行的!這點(diǎn)不像C++和C的頭文件。
3、import的時(shí)候是要執(zhí)行所import的模塊的。
4、__name__就是標(biāo)識(shí)模塊的名字的一個(gè)系統(tǒng)變量。這里分兩種情況:假如當(dāng)前模塊是主模塊(也就是調(diào)用其他模塊的模塊),那么此模塊名字就是__main__,通過if判斷這樣就可以執(zhí)行“__mian__:”后面的主函數(shù)內(nèi)容;假如此模塊是被import的,則此模塊名字為文件名字(不加后面的.py),通過if判斷這樣就會(huì)跳過“__mian__:”后面的內(nèi)容。
通過上面方式,python就可以分清楚哪些是主函數(shù),進(jìn)入主函數(shù)執(zhí)行;并且可以調(diào)用其他模塊的各個(gè)函數(shù)等等。
根據(jù)具體問題類型,進(jìn)行步驟拆解/原因原理分析/內(nèi)容拓展等。
具體步驟如下:/導(dǎo)致這種情況的原因主要是??
1、complex()
返回一個(gè)形如?a+bj?的復(fù)數(shù),傳入?yún)?shù)分為三種情況:
參數(shù)為空時(shí),返回0j;參數(shù)為字符串時(shí),將字符串表達(dá)式解釋為復(fù)數(shù)形式并返回;參數(shù)為兩個(gè)整數(shù)(a,b)時(shí),返回?a+bj;參數(shù)只有一個(gè)整數(shù) a 時(shí),虛部 b 默認(rèn)為0,函數(shù)返回?a+0j。
2、dir()
不提供參數(shù)時(shí),返回當(dāng)前本地范圍內(nèi)的名稱列表;提供一個(gè)參數(shù)時(shí),返回該對(duì)象包含的全部屬性。
3、divmod(a,b)
a -- 代表被除數(shù),整數(shù)或浮點(diǎn)數(shù);b -- 代表除數(shù),整數(shù)或浮點(diǎn)數(shù);根據(jù) 除法運(yùn)算 計(jì)算 a,b 之間的商和余數(shù),函數(shù)返回一個(gè)元組(p,q)?,p 代表商?a//b?,q 代表余數(shù)?a%b。
4、enumerate(iterable,start=0)
iterable -- 一個(gè)可迭代對(duì)象,列表、元組序列等;start -- 計(jì)數(shù)索引值,默認(rèn)初始為0‘該函數(shù)返回枚舉對(duì)象是個(gè)迭代器,利用 next() 方法依次返回元素值,每個(gè)元素以元組形式存在,包含一個(gè)計(jì)數(shù)元素(起始為 start )和 iterable 中對(duì)應(yīng)的元素值。