Python中hasattr、getattr与setattr函数的用法详解
本文详细介绍Python中hasattr、getattr和setattr三个函数的使用方法。hasattr用于判断对象属性或方法是否存在;getattr用于获取属性值或方法内存地址,支持设置默认值;setattr用于给对象属性赋值,若属性不存在则自动创建。通过具体代码示例,展示这三个函数在动态处理对象属性时的综合应用技巧。
hasattr(object, name)
该函数用于检测指定对象中是否包含名为name的属性或方法,并返回布尔值。若对象具备该特性,则返回True;反之则返回False。
调用时需注意,参数name必须使用引号括起来。
>>> class test(): ... name="xiaohua" ... def run(self): ... return "HelloWord" ... >>> t=test() >>> hasattr(t, "name") #判断对象有name属性 True >>> hasattr(t, "run") #判断对象有run方法 True >>>
getattr(object, name[,default])
此函数用于获取对象object中指定属性或方法的值。若属性存在,则返回该值;若不存在,则返回可选的默认值(default)。
需注意,若获取的是方法,返回值将是该方法的内存地址。若需执行该方法,需在返回值后添加一对括号进行调用。
>>> class test(): ... name="xiaohua" ... def run(self): ... return "HelloWord" ... >>> t=test() >>> getattr(t, "name") #获取name属性,存在就打印出来。 'xiaohua' >>> getattr(t, "run") #获取run方法,存在就打印出方法的内存地址。 <bound method test.run of <__main__.test instance at 0x0269C878>> >>> getattr(t, "run")() #获取run方法,后面加括号可以将这个方法运行。 'HelloWord' >>> getattr(t, "age") #获取一个不存在的属性。 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: test instance has no attribute 'age' >>> getattr(t, "age","18") #若属性不存在,返回一个默认值。 '18' >>>
setattr(object, name, values)
该函数用于为对象的属性赋值。若目标属性尚不存在,系统会先创建该属性,然后再进行赋值操作。
>>> class test(): ... name="xiaohua" ... def run(self): ... return "HelloWord" ... >>> t=test() >>> hasattr(t, "age") #判断属性是否存在 False >>> setattr(t, "age", "18") #为属相赋值,并没有返回值 >>> hasattr(t, "age") #属性存在了 True >>>
一种常见的综合应用场景是:先判断对象属性是否存在,若不存在则通过setattr添加该属性。
>>> class test(): ... name="xiaohua" ... def run(self): ... return "HelloWord" ... >>> t=test() >>> getattr(t, "age") #age属性不存在 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: test instance has no attribute 'age' >>> getattr(t, "age", setattr(t, "age", "18")) #age属性不存在时,设置该属性 '18' >>> getattr(t, "age") #可检测设置成功 '18' >>>
总结
以上介绍了Python中hasattr、getattr和setattr三个函数的具体用法,希望能为读者提供帮助。如有疑问,欢迎留言交流,我们将及时回复。感谢支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













