一文搞懂Python的hasattr()、getattr()、setattr()?函數(shù)用法
hasattr()
hasattr() 函數(shù)用來(lái)判斷某個(gè)類實(shí)例對(duì)象是否包含指定名稱的屬性或方法。
該函數(shù)的語(yǔ)法格式如下:
hasattr(obj, name)
其中 obj 指的是某個(gè)類的實(shí)例對(duì)象,name 表示指定的屬性名或方法名,返回BOOL值,有name特性返回True, 否則返回False。
例子:
class demo: def __init__ (self): self.name = "lily" def say(self): print("say hi") d = demo() print(hasattr(d, 'name')) print(hasattr(d, 'say')) print(hasattr(d, 'eat'))
運(yùn)行結(jié)果如下:
True
True
False
getattr()
getattr() 函數(shù)獲取某個(gè)類實(shí)例對(duì)象中指定屬性的值。
該函數(shù)的語(yǔ)法格式如下:
getattr(object, name[, default])
其中,obj 表示指定的類實(shí)例對(duì)象,name 表示指定的屬性名,而 default 是可選參數(shù),用于設(shè)定該函數(shù)的默認(rèn)返回值,即當(dāng)函數(shù)查找失敗時(shí),如果不指定 default 參數(shù),則程序?qū)⒅苯訄?bào) AttributeError 錯(cuò)誤,反之該函數(shù)將返回 default 指定的值。
例子:
class demo: def __init__ (self): self.name = "lily" def say(self): return "say hi" d = demo() print(getattr(d, 'name')) print(getattr(d, 'say')) print(getattr(d, 'eat'))
運(yùn)行結(jié)果如下:
lily
<bound method demo.say of <__main__.demo object at 0x7f31c630d0a0>>
Traceback (most recent call last):
File "/test.py", line 11, in <module>
print(getattr(d, 'eat'))
AttributeError: 'demo' object has no attribute 'eat'
可以看到,對(duì)于類中已有的屬性,getattr() 會(huì)返回它們的值,而如果該名稱為方法名,則返回該方法的狀態(tài)信息;反之,如果該明白不為類對(duì)象所有,要么返回默認(rèn)的參數(shù),要么程序報(bào) AttributeError 錯(cuò)誤。
需要注意的是,如果是返回的對(duì)象的方法,返回的是方法的內(nèi)存地址,如果需要運(yùn)行這個(gè)方法,可以在后面添加一對(duì)括號(hào)。比如:
class demo: def __init__ (self): self.name = "lily" def say(self): return "say hi" def eat(self, something): return f"eat {something}" d = demo() print(getattr(d, 'name')) print(getattr(d, 'say')) print(getattr(d, 'eat')('apple')) print(getattr(d, 'eat', 'no eat')('banana'))
運(yùn)行結(jié)果如下:
lily <bound method demo.say of <__main__.demo object at 0x7fe99b1ca0a0>> eat apple eat banana
setattr()
setattr() 函數(shù)最基礎(chǔ)的功能是修改類實(shí)例對(duì)象中的屬性值。其次,它還可以實(shí)現(xiàn)為實(shí)例對(duì)象動(dòng)態(tài)添加屬性或者方法。
該函數(shù)的語(yǔ)法格式如下:
setattr(obj, name, value)
例子:
class demo: def __init__ (self): self.name = "lily" d = demo() print(getattr(d, 'name')) print('----------') setattr(d, 'name', 'tom') print(getattr(d, 'name')) print('----------') print(hasattr(d, 'age')) setattr(d, 'age', '18') print(hasattr(d, 'age')) print(getattr(d, 'age'))
運(yùn)行結(jié)果如下:
lily
----------
tom
----------
False
True
18
到此這篇關(guān)于一文搞懂Python的hasattr()、getattr()、setattr() 函數(shù)用法的文章就介紹到這了,更多相關(guān)Python的hasattr()、getattr()、setattr() 函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 一次搞懂hasattr()/getattr()/setattr()在Python中的應(yīng)用
- python中hasattr()、getattr()、setattr()函數(shù)的使用
- 詳解Python的hasattr() getattr() setattr() 函數(shù)使用方法
- 詳解Python3 中hasattr()、getattr()、setattr()、delattr()函數(shù)及示例代碼數(shù)
- 全面了解Python的getattr(),setattr(),delattr(),hasattr()
- 淺談python中的getattr函數(shù) hasattr函數(shù)
- 淺析Python中的getattr(),setattr(),delattr(),hasattr()
- Python中g(shù)etattr函數(shù)和hasattr函數(shù)作用詳解
- python中hasattr方法示例詳解
相關(guān)文章
五分鐘學(xué)會(huì)怎么用python做一個(gè)簡(jiǎn)單的貪吃蛇
這篇文章主要介紹了五分鐘學(xué)會(huì)怎么用python做一個(gè)簡(jiǎn)單的貪吃蛇,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01python生成可執(zhí)行exe控制Microsip自動(dòng)填寫號(hào)碼并撥打功能
這篇文章主要介紹了python生成可執(zhí)行exe控制Microsip自動(dòng)填寫號(hào)碼并撥打,在這需要注意一個(gè)問題,必須是已經(jīng)運(yùn)行Microsip.exe文件,具體實(shí)現(xiàn)代碼跟隨小編一起看看吧2021-06-06Python實(shí)現(xiàn)字典去除重復(fù)的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)字典去除重復(fù)的方法,涉及Python字典遍歷、文件讀取、去除重復(fù)等相關(guān)操作技巧,需要的朋友可以參考下2017-07-07Python 中檢查一個(gè)字符是否為數(shù)字的示例代碼
本文詳細(xì)介紹了在 Python 中檢查一個(gè)字符是否為數(shù)字的幾種常用方法。我們介紹了使用 isdigit() 方法、isnumeric() 方法和正則表達(dá)式等方法,并提供了示例代碼幫助你理解和應(yīng)用這些方法,需要的朋友可以參考下2023-06-06Python函數(shù)的返回值、匿名函數(shù)lambda、filter函數(shù)、map函數(shù)、reduce函數(shù)用法實(shí)例分析
這篇文章主要介紹了Python函數(shù)的返回值、匿名函數(shù)lambda、filter函數(shù)、map函數(shù)、reduce函數(shù)用法,結(jié)合實(shí)例形式分析了Python函數(shù)的返回值、匿名函數(shù)lambda、filter函數(shù)、map函數(shù)、reduce函數(shù)相關(guān)功能、原理與使用技巧,需要的朋友可以參考下2019-12-12win10下python3.5.2和tensorflow安裝環(huán)境搭建教程
這篇文章主要為大家詳細(xì)介紹了win10下python3.5.2和tensorflow安裝環(huán)境搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09