getattr()方法返回對(duì)象的命名屬性的值。如果找不到,它將返回提供給該函數(shù)的默認(rèn)值。
getattr()方法的語(yǔ)法為:
getattr(object, name[, default])
上面的語(yǔ)法等效于:
object.name
getattr()方法采用多個(gè)參數(shù):
object -要返回其命名屬性值的對(duì)象
name -包含屬性名稱的字符串
default(可選) -找不到命名屬性時(shí)返回的值
getattr()方法返回:
給定對(duì)象的命名屬性的值
default,如果找不到命名屬性
AttributeError異常,如果未找到已命名的屬性且未定義默認(rèn)值
class Person: age = 23 name = "Adam" person = Person() print('年齡是:', getattr(person, "age")) print('年齡是:', person.age)
運(yùn)行該程序時(shí),輸出為:
年齡是: 23 年齡是: 23
class Person: age = 23 name = "Adam" person = Person() # 當(dāng)提供默認(rèn)值時(shí) print('性別是:', getattr(person, 'sex', 'Male')) # 當(dāng)沒有提供默認(rèn)值時(shí) print('性別是:', getattr(person, 'sex'))
運(yùn)行該程序時(shí),輸出為:
性別是: Male AttributeError: 'Person' object has no attribute 'sex'
已命名的屬性sex不存在于Person類中。因此,當(dāng)使用默認(rèn)值Male調(diào)用getattr()方法時(shí),它將返回Male。
但是,如果我們不提供任何默認(rèn)值,則在找不到命名屬性sex時(shí),會(huì)拋出一個(gè)AttributeError說法,即該對(duì)象沒有sex屬性。