欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文搞懂Python的hasattr()、getattr()、setattr()?函數(shù)用法

 更新時(shí)間:2022年04月22日 11:11:08   作者:昜羊  
python中的getattr()、setattr()、hasattr()函數(shù)均是對(duì)類屬性或方法的操作,其中g(shù)etattr()用于獲取類或?qū)嵗兄付ǚ椒ǐ@取屬性的值,setattr()用于設(shè)置類或?qū)嵗袑傩曰蚍椒?hasattr()用于判斷類或?qū)嵗惺欠翊嬖谥付ǖ膶傩曰蚍椒?本文通過例子給大家詳解,一起看看吧

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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論