處理屬性的重要屬性和函數(shù)
成都創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)營銷等。成都創(chuàng)新互聯(lián)公司為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,成都創(chuàng)新互聯(lián)公司核心團(tuán)隊(duì)10年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗(yàn),為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。
1、特殊屬性
__class__:對象所屬類的引用(即obj.__class__和type(obj)的作用相同)。Python中的某些特殊方法比如 __getattr__,只在對象的類中尋找,而不在實(shí)例中尋找。__dict__:一個(gè)映射,存儲(chǔ)對象或類的可寫屬性。__slots__:類可以定義這個(gè)屬性,限制實(shí)例有哪些屬性。
2、內(nèi)置函數(shù)
dir([object]):列出對象的大多數(shù)屬性。getattr(object,name[,default]):從object對象中獲取name字符串對應(yīng)的屬性。獲取的屬性可能來自對象所屬的類或超類。hasattr(object,name):若object對象中存在指定的屬性,或者能以某種方式(如繼承)通過object對象獲取指定的屬性,返回True。setattr(object,name,value):把object對象指定屬性的值設(shè)為value,前提是object對象能接受那個(gè)值。這個(gè)函數(shù)可能會(huì)創(chuàng)建一個(gè)新屬性,或者覆蓋現(xiàn)有的屬性。var([object]):返回object對象的__dict__屬性。
相關(guān)推薦:《Python視頻教程》
3、特殊方法
__delattr__(self,name):只要使用del語句刪除屬性,就會(huì)調(diào)用這個(gè)方法。__dir__(self):把對象傳給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)號和setattr內(nèi)置函數(shù)會(huì)觸發(fā)這個(gè)方法。
相關(guān)推薦:
Python中的屬性和特性是什么
代碼看起來沒有問題。如果在python3上不能用,應(yīng)該也只需要小小的調(diào)整。原則上應(yīng)該跑得通。
不過話說回來,這樣的技巧通常在python里用不上。因?yàn)閜ython的強(qiáng)大并不是因?yàn)樗拿嫦驅(qū)ο髮傩浴?/p>
而且這些寫代碼的可讀性也較差。 python的強(qiáng)大在于它通用,它與C的良好結(jié)合,最重要的是它是“腳本”。 可以動(dòng)態(tài)的做任何事情,既然它的動(dòng)態(tài)很強(qiáng)大,你就不需要寫這樣的代碼。
直接這樣
s1= AnyClass()
s1.any_variable = some_value
這樣足夠了。因?yàn)閜ython可以自動(dòng)給未知的變量,增加一個(gè)內(nèi)部屬性。所以我經(jīng)常寫下面的這樣的代碼
class?Config:
pass
conf?=?Config()
conf.mysql_ip?=?"127.0.0.1"
這樣就可以了
可以使用點(diǎn)(.)運(yùn)算符來添加屬性。在 Python 中,你可以像下面這樣為一個(gè)對象添加屬性:
?Copy code
student.age = 20
這個(gè)語句為 student 對象添加了一個(gè)名為 age 的屬性,并將其值設(shè)置為 20。你可以將其替換為不同的屬性名稱和值,根據(jù)需要隨時(shí)添加不同的屬性。
往列表里添加多個(gè)值可以用 extend():
class?User():
def?__init__(self,?first_name,?last_name):
self.first?=?first_name
self.last?=?last_name
def?titl(self):
list?=?[]
#?list.append(self.first_name)
#?list.append(self.last_name)
list.extend([self.first,?self.last])
print(list)
me?=?User('ssx',?'xing')
print(me.first?+?',?'?+?me.last)
me.titl()