详解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发腾讯微博代码分享
Jan 10 Python
详解Python进程间通信之命名管道
Aug 28 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
解决django接口无法通过ip进行访问的问题
Mar 27 Python
python的scipy.stats模块中正态分布常用函数总结
Feb 19 Python
python3 hdf5文件 遍历代码
May 19 Python
Python语言中的数据类型-序列
Feb 24 Python
python实现双链表
May 25 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/06 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
[01:03:36]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第二场 1月26日
2021/03/11 DOTA
pyramid配置session的方法教程
2013/11/27 Python
python使用PyFetion来发送短信的例子
2014/04/22 Python
python提取字典key列表的方法
2015/07/11 Python
Python中动态检测编码chardet的使用教程
2017/07/06 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
python 接口返回的json字符串实例
2018/03/27 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
公安四风对照检查材料思想汇报
2014/10/11 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python