Python通過getattr函數(shù)獲取對象的屬性值
英文文檔:
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.
獲取對象的屬性值
說明:
1. 函數(shù)功能是從對象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ù)第三個參數(shù)default為可選參數(shù),如果object中含義name屬性,則返回name屬性的值,如果沒有name屬性,則返回default值,如果default未傳入值,則報錯。
#定義類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)用報錯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)找不到某個屬性時會調(diào)用該方法;找到就不會調(diào)用.
getattr與類無關(guān).
一個例子:作為data的代理類,可以以這種方式來使用data的屬性.
class DataProxy(...): def __getattr__(self, item): return getattr(self.data, item)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Spring security 自定義過濾器實(shí)現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù)(實(shí)例代碼)2. 學(xué)python最電腦配置有要求么3. Java8內(nèi)存模型PermGen Metaspace實(shí)例解析4. JAMon(Java Application Monitor)備忘記5. Python 的 __str__ 和 __repr__ 方法對比6. Python Scrapy多頁數(shù)據(jù)爬取實(shí)現(xiàn)過程解析7. python使用QQ郵箱實(shí)現(xiàn)自動發(fā)送郵件8. 基于python實(shí)現(xiàn)操作git過程代碼解析9. python中用Scrapy實(shí)現(xiàn)定時爬蟲的實(shí)例講解10. 解決redis與Python交互取出來的是bytes類型的問題
