详解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 19 Python
Python中解析JSON并同时进行自定义编码处理实例
Feb 08 Python
python使用cStringIO实现临时内存文件访问的方法
Mar 26 Python
python中字典(Dictionary)用法实例详解
May 30 Python
python+matplotlib演示电偶极子实例代码
Jan 12 Python
python抓取网站的图片并下载到本地的方法
May 22 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
Aug 04 Python
python 对类的成员函数开启线程的方法
Jan 22 Python
Python assert语句的简单使用示例
Jul 28 Python
python实现的读取网页并分词功能示例
Oct 29 Python
Python sorted排序方法如何实现
Mar 31 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 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
mysql+php分页类(已测)
2008/03/31 PHP
PHP正则的Unknown Modifier错误解决方法
2010/03/02 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
解析thinkphp中的导入文件标签
2013/06/20 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
详解AngularJS Filter(过滤器)用法
2015/12/28 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
python 容器总结整理
2017/04/04 Python
Python中函数参数匹配模型详解
2019/06/09 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
Linux文件系统类型
2012/09/16 面试题
员工安全承诺书
2014/05/22 职场文书
大足石刻导游词
2015/02/02 职场文书
成事在人观后感
2015/06/16 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
导游词之河北白洋淀
2020/01/15 职场文书
mysql timestamp比较查询遇到的坑及解决
2021/11/27 MySQL
Redis实现短信验证码登录的示例代码
2022/06/14 Redis