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ù)第三個(gè)參數(shù)default為可選參數(shù),如果object中含義name屬性,則返回name屬性的值,如果沒有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與類無關(guān).
一個(gè)例子:作為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ī)選擇元素的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
為什么入門大數(shù)據(jù)選擇Python而不是Java?
為什么入門大數(shù)據(jù)選擇Python而不是Java?這篇文章就來談?wù)剬W(xué)習(xí)大數(shù)據(jù)入門語言的選擇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
Python算法思想集結(jié)深入理解動(dòng)態(tài)規(guī)劃
這篇文章主要為大家介紹了Python算法思想集結(jié)深入理解動(dòng)態(tài)規(guī)劃詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Python的線程使用隊(duì)列Queue來改造轉(zhuǎn)賬場景
前篇我們了隊(duì)列Queue和轉(zhuǎn)賬場景這次趁熱學(xué)委展示一下使用隊(duì)列解決轉(zhuǎn)賬場景的問題,這篇文章主要介紹了Python的線程使用隊(duì)列來改造轉(zhuǎn)賬場景,需要的朋友可以參考一下2022-02-02
python opencv如何實(shí)現(xiàn)圖片繪制
這篇文章主要介紹了python opencv如何實(shí)現(xiàn)圖片繪制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
Python中字典(dict)和列表(list)的排序方法實(shí)例
這篇文章主要介紹了Python中字典(dict)和列表(list)的排序方法實(shí)例,總結(jié)來說優(yōu)先使用內(nèi)置的sort()方法進(jìn)行排序,需要的朋友可以參考下2014-06-06
一些讓Python代碼簡潔的實(shí)用技巧總結(jié)
隨著項(xiàng)目代碼行數(shù)的增加,不可避免的遇到軟件架構(gòu)腐敗的問題,所以如何寫出簡潔的代碼至關(guān)重要,這篇文章主要給大家介紹了一些讓Python代碼簡潔的實(shí)用技巧,需要的朋友可以參考下2021-08-08
Python 網(wǎng)絡(luò)編程之TCP客戶端/服務(wù)端功能示例【基于socket套接字】
這篇文章主要介紹了Python 網(wǎng)絡(luò)編程之TCP客戶端/服務(wù)端功能,結(jié)合實(shí)例形式分析了Python使用socket套接字實(shí)現(xiàn)TCP協(xié)議下的客戶端與服務(wù)器端數(shù)據(jù)傳輸操作技巧,需要的朋友可以參考下2019-10-10
簡單介紹Python中利用生成器實(shí)現(xiàn)的并發(fā)編程
這篇文章主要介紹了簡單介紹Python中利用生成器實(shí)現(xiàn)的并發(fā)編程,使用yield生成器函數(shù)進(jìn)行多進(jìn)程編程是Python學(xué)習(xí)進(jìn)階當(dāng)中的重要知識(shí),需要的朋友可以參考下2015-05-05

