详解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 调用VC++的动态链接库(DLL)
Sep 06 Python
Python读取mp3中ID3信息的方法
Mar 05 Python
Python中for循环和while循环的基本使用方法
Aug 21 Python
Python自动化部署工具Fabric的简单上手指南
Apr 19 Python
Python中with及contextlib的用法详解
Jun 08 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
Jun 04 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
Jun 27 Python
django的model操作汇整详解
Jul 26 Python
python multiprocessing多进程变量共享与加锁的实现
Oct 02 Python
Python3.8安装Pygame教程步骤详解
Aug 14 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
Dec 07 Python
baselines示例程序train_cartpole.py的ImportError
May 20 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 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
一些 PHP 管理系统程序中的后门
2009/08/05 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
python实现在字符串中查找子字符串的方法
2015/07/11 Python
Python标准库sched模块使用指南
2017/07/06 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
浅谈Python 函数式编程
2020/06/20 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
浅谈css3中的前缀
2016/07/20 HTML / CSS
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
优秀安全员事迹材料
2014/05/11 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
十七岁的单车观后感
2015/06/12 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android
python基础之//、/与%的区别详解
2022/06/10 Python