详解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 greenlet实现原理和使用示例
Sep 24 Python
Google开源的Python格式化工具YAPF的安装和使用教程
May 31 Python
Python3非对称加密算法RSA实例详解
Dec 06 Python
关于pytorch中网络loss传播和参数更新的理解
Aug 20 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
django数据模型on_delete, db_constraint的使用详解
Dec 24 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
May 10 Python
Python常用数字处理基本操作汇总
Sep 10 Python
Python logging日志库空间不足问题解决
Sep 14 Python
Pytorch可视化的几种实现方法
Jun 10 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
解析strtr函数的效率问题
2013/06/26 PHP
php使用codebase生成随机数
2014/03/25 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
[原创]php使用curl判断网页404(不存在)的方法
2016/06/23 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
javascript各种复制代码收集
2008/09/20 Javascript
基于jquery的bankInput银行卡账号格式化
2012/08/22 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
Python六大开源框架对比
2015/10/19 Python
Python数据结构之图的应用示例
2018/05/11 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
python Tornado框架的使用示例
2020/10/19 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
毕业生多媒体设计求职信
2013/10/12 职场文书
养殖人员的创业计划书范文
2013/12/26 职场文书
九年级政治教学反思
2014/02/06 职场文书
会计个人实习计划书
2014/08/15 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
行政文员实习自我鉴定范文
2014/09/14 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书