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í)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python random從集合中隨機(jī)選擇元素的方法
今天小編就為大家分享一篇python random從集合中隨機(jī)選擇元素的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
為什么入門大數(shù)據(jù)選擇Python而不是Java?
為什么入門大數(shù)據(jù)選擇Python而不是Java?這篇文章就來談?wù)剬W(xué)習(xí)大數(shù)據(jù)入門語言的選擇,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
Python算法思想集結(jié)深入理解動態(tài)規(guī)劃
這篇文章主要為大家介紹了Python算法思想集結(jié)深入理解動態(tài)規(guī)劃詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Python的線程使用隊列Queue來改造轉(zhuǎn)賬場景
前篇我們了隊列Queue和轉(zhuǎn)賬場景這次趁熱學(xué)委展示一下使用隊列解決轉(zhuǎn)賬場景的問題,這篇文章主要介紹了Python的線程使用隊列來改造轉(zhuǎn)賬場景,需要的朋友可以參考一下2022-02-02
Python中字典(dict)和列表(list)的排序方法實例
這篇文章主要介紹了Python中字典(dict)和列表(list)的排序方法實例,總結(jié)來說優(yōu)先使用內(nèi)置的sort()方法進(jìn)行排序,需要的朋友可以參考下2014-06-06
Python 網(wǎng)絡(luò)編程之TCP客戶端/服務(wù)端功能示例【基于socket套接字】
這篇文章主要介紹了Python 網(wǎng)絡(luò)編程之TCP客戶端/服務(wù)端功能,結(jié)合實例形式分析了Python使用socket套接字實現(xiàn)TCP協(xié)議下的客戶端與服務(wù)器端數(shù)據(jù)傳輸操作技巧,需要的朋友可以參考下2019-10-10
簡單介紹Python中利用生成器實現(xiàn)的并發(fā)編程
這篇文章主要介紹了簡單介紹Python中利用生成器實現(xiàn)的并發(fā)編程,使用yield生成器函數(shù)進(jìn)行多進(jìn)程編程是Python學(xué)習(xí)進(jìn)階當(dāng)中的重要知識,需要的朋友可以參考下2015-05-05

