Python通過(guò)getattr函數(shù)獲取對(duì)象的屬性值
英文文檔:
getattr(object, name[, default])Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object’s attributes, the result is the value of that attribute. For example, getattr(x, ’foobar’) is equivalent to x.foobar. If the named attribute does not exist, default is returned if provided, otherwise AttributeError is raised.
獲取對(duì)象的屬性值
說(shuō)明:
1. 函數(shù)功能是從對(duì)象object中獲取名稱為name的屬性,等效與調(diào)用object.name。
#定義類Student>>> class Student: def __init__(self,name): self.name = name >>> s = Stduent(’Aim’)>>> getattr(s,’name’) #等效于調(diào)用s.name’Aim’>>> s.name’Aim’
2. 函數(shù)第三個(gè)參數(shù)default為可選參數(shù),如果object中含義name屬性,則返回name屬性的值,如果沒(méi)有name屬性,則返回default值,如果default未傳入值,則報(bào)錯(cuò)。
#定義類Student>>> class Student: def __init__(self,name): self.name = name>>> getattr(s,’name’) #存在屬性name’Aim’>>> getattr(s,’age’,6) #不存在屬性age,但提供了默認(rèn)值,返回默認(rèn)值6>>> getattr(s,’age’) #不存在屬性age,未提供默認(rèn)值,調(diào)用報(bào)錯(cuò)Traceback (most recent call last): File '<pyshell#17>', line 1, in <module> getattr(s,’age’)AttributeError: ’Stduent’ object has no attribute ’age’
與__getattr__的區(qū)別:
__getattr__是類的內(nèi)置方法,當(dāng)找不到某個(gè)屬性時(shí)會(huì)調(diào)用該方法;找到就不會(huì)調(diào)用.
getattr與類無(wú)關(guān).
一個(gè)例子:作為data的代理類,可以以這種方式來(lái)使用data的屬性.
class DataProxy(...): def __getattr__(self, item): return getattr(self.data, item)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Python 如何展開嵌套的序列2. Python TestSuite生成測(cè)試報(bào)告過(guò)程解析3. IntelliJ IDEA設(shè)置默認(rèn)瀏覽器的方法4. 如何清空python的變量5. Python os庫(kù)常用操作代碼匯總6. Vue作用域插槽實(shí)現(xiàn)方法及作用詳解7. 增大python字體的方法步驟8. IntelliJ IDEA設(shè)置背景圖片的方法步驟9. 在JSP中使用formatNumber控制要顯示的小數(shù)位數(shù)方法10. JAMon(Java Application Monitor)備忘記
