详解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的Treq on Twisted来进行HTTP压力测试
Apr 16 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
Mar 31 Python
Python 元类实例解析
Apr 04 Python
python实现决策树分类
Aug 30 Python
python3中property使用方法详解
Apr 23 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
python离线安装外部依赖包的实现
Feb 13 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
python判断正负数方式
Jun 03 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 Python
Python机器学习之底层实现KNN
Jun 20 Python
Python django中如何使用restful框架
Jun 23 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自带的进位制之间的转换函数
2013/06/08 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
jquery根据锚点offset值实现动画切换
2014/09/11 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python 中的 else详解
2016/04/23 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
Python pymongo模块常用操作分析
2018/09/01 Python
Python操作json的方法实例分析
2018/12/06 Python
python使用knn实现特征向量分类
2018/12/26 Python
django一对多模型以及如何在前端实现详解
2019/07/24 Python
自定义django admin model表单提交的例子
2019/08/23 Python
Django实现分页显示效果
2019/10/31 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
servlet面试题
2012/08/20 面试题
农行实习自我鉴定
2013/09/22 职场文书
成人教育自我鉴定
2013/11/01 职场文书
电气技术员岗位职责
2013/11/19 职场文书
预备党员公开承诺书
2014/05/28 职场文书
单位法定代表人授权委托书
2014/09/20 职场文书
治庸问责工作总结
2015/08/11 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
SQL语句多表联合查询的方法示例
2022/04/18 MySQL