详解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 相关文章推荐
Django中传递参数到URLconf的视图函数中的方法
Jul 18 Python
Djang中静态文件配置方法
Jul 30 Python
django基础之数据库操作方法(详解)
May 24 Python
python文件名和文件路径操作实例
Sep 29 Python
numpy使用技巧之数组过滤实例代码
Feb 03 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
如何利用python给图片添加半透明水印
Sep 06 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
Python中的 ansible 动态Inventory 脚本
Jan 19 Python
Tensorflow训练MNIST手写数字识别模型
Feb 13 Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
Sep 04 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+mysql一个名片库程序
2006/10/09 PHP
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
PHP自定义函数收代码
2010/08/01 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
js实现圆盘记速表
2015/08/03 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
Vue事件处理原理及过程详解
2020/03/11 Javascript
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
python处理中文编码和判断编码示例
2014/02/26 Python
Python新手实现2048小游戏
2015/03/31 Python
Python3实现Web网页图片下载
2016/01/28 Python
不可错过的十本Python好书
2017/07/06 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
html5 button autofocus 属性介绍及应用
2013/01/04 HTML / CSS
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
EJB的几种类型
2012/08/15 面试题
给排水工程师岗位职责
2013/11/21 职场文书
优秀毕业生求职信范文
2014/01/02 职场文书
就业协议书
2014/09/12 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers