详解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编写屏幕截图程序方法
Feb 18 Python
在Python中使用__slots__方法的详细教程
Apr 28 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
Python寻找两个有序数组的中位数实例详解
Dec 05 Python
python3使用matplotlib绘制条形图
Mar 25 Python
python re模块匹配贪婪和非贪婪模式详解
Feb 11 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
基于python图像处理API的使用示例
Apr 03 Python
Python使用shutil模块实现文件拷贝
Jul 31 Python
Python使用openpyxl复制整张sheet
Mar 24 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操作文件的一些基本函数使用示例
2014/11/18 PHP
php去掉文件前几行的方法
2015/07/29 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
thinkphp分页集成实例
2017/07/24 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
jquery中文乱码的多种解决方法
2013/06/21 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
基于canvas的二维码邀请函生成插件
2017/02/14 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
python基础学习之如何对元组各个元素进行命名详解
2018/07/12 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
Madewell美德威尔美国官网:美国休闲服饰品牌
2016/11/25 全球购物
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
应届生程序员求职信
2013/11/05 职场文书
初中校园之声广播稿
2014/01/15 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
2014年小学工作总结
2014/11/26 职场文书
2014年应急管理工作总结
2014/11/26 职场文书