python中hasattr()、getattr()、setattr()使用

1、hasattr(object,name)方法的使用:

判断object对象中是否包含name属性或者方法,返回Boolez值,返回True表示object包含name,返回false表示object包含name。

>>> class test():
...     name="huahua"
...     def run(self):
...             return "HelloWord"
...
>>> t=test()
>>> hasattr(t, "name") #判断对象有name属性
True
>>> hasattr(t, "run")  #判断对象有run方法
True
>>>
2、getattr(object,name[,value])方法的使用:

获取object对象中name属性或方法,如果存在打印出来,如果不存在,打印出默认值,默认值可选。需要注意的是,如果是返回的对象的方法,返回的是方法的内存地址,如果需要运行这个方法,可以在后面添加一对括号。

>>> class test():
...     name="huahua"
...     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'
>>>
3、setattr(object,name,value)方法的使用:

对object对象中name属性赋值为value

>>> class test():
...     name="xiaohua"
...     def run(self):
...             return "HelloWord"
...
>>> t=test()
>>> hasattr(t, "age")   #判断属性是否存在
False
>>> setattr(t, "age", "18")   #为属相赋值,并没有返回值
>>> hasattr(t, "age")    #属性存在了
True
>>>
4、一种综合的用法是:判断一个对象的属性是否存在,若不存在就添加该属性。
>>> class test():
...     name="huahua"
...     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'
>>>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,838评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,493评论 18 399
  • “快乐的本质在于尽情发挥自己的优势!” 今天答辩,自认为数据很多,讲解的也比较清晰!台下的两个老师也比较...
    FQ炒蛋阅读 1,859评论 0 0
  • 这几天的状态不适合写文,估计是头脑太跳跃,可能是遇到小学妹被她带坏了,也可能是遇到拒绝松懈。 ...
    七娴黎阅读 3,081评论 0 3
  • Words 1.malformed adj. 畸形的,难看的 2、flaxen adj. 淡黄色的;亚麻的;亚...
    debbie392阅读 5,167评论 0 0

友情链接更多精彩内容