详解Python的hasattr() getattr() setattr() 函数使用方法


Posted in Python onJuly 09, 2018

hasattr(object, name)

判断一个对象里面是否有name属性或者name方法,返回BOOL值,有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的属性或者方法,如果存在打印出来,如果不存在,打印出默认值,默认值可选。

需要注意的是,如果是返回的对象的方法,返回的是方法的内存地址,如果需要运行这个方法,可以在后面添加一对括号。

>>> 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
 >>>

一种综合的用法是:判断一个对象的属性是否存在,若不存在就添加该属性。

>>> 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() 函数使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python中的列表推导浅析
Apr 26 Python
探究python中open函数的使用
Mar 01 Python
python下os模块强大的重命名方法renames详解
Mar 07 Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
python networkx 根据图的权重画图实现
Jul 10 Python
django一对多模型以及如何在前端实现详解
Jul 24 Python
通过实例简单了解Python中yield的作用
Dec 11 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
Mar 18 Python
使用tensorflow进行音乐类型的分类
Aug 14 Python
Python通过Schema实现数据验证方式
Nov 12 Python
解决jupyter notebook图片显示模糊和保存清晰图片的操作
Apr 24 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 #Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 #Python
利用Python如何生成便签图片详解
Jul 09 #Python
Caffe均值文件mean.binaryproto转mean.npy的方法
Jul 09 #Python
使用Python更换外网IP的方法
Jul 09 #Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 #Python
Python迭代器与生成器用法实例分析
Jul 09 #Python
You might like
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
JS长整型精度问题实例分析
2015/01/13 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
ionic环境配置及问题详解
2017/06/27 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
vue axios请求拦截实例代码
2018/03/29 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
python刷投票的脚本实现代码
2014/11/08 Python
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
Python通过len函数返回对象长度
2020/10/22 Python
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
大学生水果店创业计划书
2014/01/28 职场文书
八项规定整改措施
2014/02/12 职场文书
运动会入场词50字
2014/02/20 职场文书
高一学生期末评语
2014/04/25 职场文书
法人代表任命书范本
2014/06/05 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
Kubernetes控制节点的部署
2022/04/01 Servers
js判断两个数组相等的5种方法
2022/05/06 Javascript
MySQL数据库查询之多表查询总结
2022/08/05 MySQL