详解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基于DES算法加密解密实例
Jun 03 Python
Python中的FTP通信模块ftplib的用法整理
Jul 08 Python
Python实现数据库并行读取和写入实例
Jun 09 Python
Python3中详解fabfile的编写
Jun 24 Python
python集合比较(交集,并集,差集)方法详解
Sep 13 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
pandas删除指定行详解
Apr 04 Python
使用Python爬取弹出窗口信息的实例
Mar 14 Python
parser.add_argument中的action使用
Apr 20 Python
python模拟斗地主发牌
Apr 22 Python
Python操作Word批量生成合同的实现示例
Aug 28 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 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存储session的php代码
2008/01/10 PHP
PHP面向对象分析设计的61条军规小结
2010/07/17 PHP
php读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
PHP、Java des加密解密实例
2015/04/27 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
python中使用序列的方法
2015/08/03 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
在pycharm中显示python画的图方法
2019/08/31 Python
详解HTML5中download属性的应用
2015/08/06 HTML / CSS
程序员跳槽必看面试题总结
2013/06/28 面试题
销售工作岗位职责
2013/12/24 职场文书
单位授权委托书范文
2014/08/02 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript
golang json数组拼接的实例
2021/04/28 Golang
详解运行Python的神器Jupyter Notebook
2021/06/03 Python