详解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 提取文件的小程序
Jul 29 Python
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 Python
在Python的Bottle框架中使用微信API的示例
Apr 23 Python
Python中实现最小二乘法思路及实现代码
Jan 04 Python
对python添加模块路径的三种方法总结
Oct 16 Python
Python装饰器简单用法实例小结
Dec 03 Python
python实现矩阵打印
Mar 02 Python
python3中类的继承以及self和super的区别详解
Jun 26 Python
python sorted函数原理解析及练习
Feb 10 Python
python opencv进行图像拼接
Mar 27 Python
用python自动生成日历
Apr 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开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
PHP基础知识回顾
2012/08/16 PHP
php多任务程序实例解析
2014/07/19 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
2019/10/28 jQuery
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
跟老齐学Python之正规地说一句话
2014/09/28 Python
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
Python数据集切分实例
2018/12/08 Python
美国性感女装网站:bebe
2017/03/04 全球购物
护理专业优质毕业生自荐书
2014/01/31 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
四议两公开实施方案
2014/03/28 职场文书
商场周年庆活动方案
2014/08/19 职场文书
农村党员对照检查材料
2014/09/24 职场文书
同意转租证明
2015/06/24 职场文书
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
Vue的过滤器你真了解吗
2022/02/24 Vue.js
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技