详解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中的getattr函数 hasattr函数
Jun 14 Python
python获取代理IP的实例分享
May 07 Python
python使用插值法画出平滑曲线
Dec 15 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
Python基本语法之运算符功能与用法详解
Oct 22 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
解决python Jupyter不能导入外部包问题
Apr 15 Python
解决Jupyter无法导入已安装的 module问题
Apr 17 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
python设置 matplotlib 正确显示中文的四种方式
May 10 Python
Django中session进行权限管理的使用
Jul 09 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获取301跳转URL简单实例
2013/12/16 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
深入讲解Java编程中类的生命周期
2016/02/05 Python
python导入时小括号大作用
2017/01/10 Python
python实现媒体播放器功能
2018/02/11 Python
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
美国女孩洋娃娃店:American Girl
2017/10/24 全球购物
办公室主任职责范本
2014/03/07 职场文书
幼儿园招生广告
2014/03/19 职场文书
培训后的感想
2015/08/07 职场文书
《实心球》教学反思
2016/02/23 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
关于python爬虫应用urllib库作用分析
2021/09/04 Python
Win11快速关闭所有广告推荐
2022/04/19 数码科技
Java设计模式之代理模式
2022/04/22 Java/Android