Python通过getattr函数获取对象的属性值
英文文档:
getattr(object,name[,default])
Returnthevalueofthenamedattributeofobject.namemustbeastring.Ifthestringisthenameofoneoftheobject'sattributes,theresultisthevalueofthatattribute.Forexample,getattr(x,'foobar')isequivalenttox.foobar.Ifthenamedattributedoesnotexist,defaultisreturnedifprovided,otherwiseAttributeErrorisraised.
获取对象的属性值
说明:
1.函数功能是从对象object中获取名称为name的属性,等效与调用object.name。
#定义类Student >>>classStudent: def__init__(self,name): self.name=name >>>s=Stduent('Aim') >>>getattr(s,'name')#等效于调用s.name 'Aim' >>>s.name 'Aim'
2.函数第三个参数default为可选参数,如果object中含义name属性,则返回name属性的值,如果没有name属性,则返回default值,如果default未传入值,则报错。
#定义类Student >>>classStudent: def__init__(self,name): self.name=name >>>getattr(s,'name')#存在属性name 'Aim' >>>getattr(s,'age',6)#不存在属性age,但提供了默认值,返回默认值 6 >>>getattr(s,'age')#不存在属性age,未提供默认值,调用报错 Traceback(mostrecentcalllast): File"",line1,in getattr(s,'age') AttributeError:'Stduent'objecthasnoattribute'age'
与__getattr__的区别:
__getattr__是类的内置方法,当找不到某个属性时会调用该方法;找到就不会调用.
getattr与类无关.
一个例子:作为data的代理类,可以以这种方式来使用data的属性.
classDataProxy(...): def__getattr__(self,item): returngetattr(self.data,item)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。