详解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利用ansible分发处理任务
Aug 04 Python
Python实现简单的获取图片爬虫功能示例
Jul 12 Python
Python实现控制台中的进度条功能代码
Dec 22 Python
对TensorFlow的assign赋值用法详解
Jul 30 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
Python实现的爬取小说爬虫功能示例
Mar 30 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
python日志模块logbook使用方法
Sep 19 Python
pyecharts调整图例与各板块的位置间距实例
May 16 Python
基于python实现查询ip地址来源
Jun 02 Python
深入了解python列表(LIST)
Jun 08 Python
python如何绘制疫情图
Sep 16 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+mysql)
2007/11/23 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
用JavaScript获取页面文档内容的实现代码
2016/06/10 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
2017/01/13 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
python里glob模块知识点总结
2021/01/05 Python
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
计算机网络专业个人的自我评价
2013/10/17 职场文书
护士自荐信
2013/10/25 职场文书
《金子》教学反思
2014/04/13 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年党员自我评议总结
2014/09/23 职场文书
招标保密承诺书
2015/01/20 职场文书
万里长城导游词
2015/01/30 职场文书
订货会主持词
2015/07/01 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python