栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python hasattr/getattr/setattr介绍

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python hasattr/getattr/setattr介绍

摘要

Python 对应属性和方法的判断 hasattr/getattr/setattr


hasattr

判断一个对象里面是否有name属性或者方法,返回值为Boolean值, 有name 返回true,反之false
其等同于getattr(object, name)

hasattr(object, name)
getattr

类似于hasattr(object, name),但是getattr当name不存在于object的时候返回default值。否则返回实际的值

getattr(object, name[, default])
setattr

给对象的属性复制,如果属性不存在,则先创建再赋值

setattr(object, name, value)
examples
root@pts/1 $ python
Python 3.5.3 (default, Jul 20 2017, 16:49:29)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.>>> help(getattr)>>>## 定义测试类>>> class TestAttr():...     name = 'James'...
...     def sayHello(self):
...         return 'Hello James'...>>> ta = TestAttr()## ta为object对象类型>>> ta
<__main__.TestAttr object at 0x7f52d55df5f8>## hasattr 测试, name属性必须加引号>>> hasattr(ta, name)
Traceback (most recent call last):
  File "", line 1, in NameError: name 'name' is not defined>>> hasattr(ta, "name")
True>>> hasattr(ta, "sayHello")
True## hasattr 不能像getattr 那样调用函数>>> hasattr(ta, "sayHello")()
Traceback (most recent call last):
  File "", line 1, in TypeError: 'bool' object is not callable>>>## setattr测试,当不存在属性的时候可以创建属性>>> hasattr(ta, "age")
False>>> setattr(ta, "age", 28)>>> hasattr(ta, "age")
True>>>## getattr 测试>>> getattr(ta, "name")'James'## 是函数的时候,可以调用函数>>> getattr(ta, "sayHello")
>>>> getattr(ta, "sayHello")()'Hello James'>>> getattr(ta, "age")28## 不存在的时候得到默认值>>> getattr(ta, "age2", 18)18>>>
Note & Refer to:

从上面的例子中我们看到

  • name 参数必须是加引号,不然报错

  • name 为函数的时候,调用getattr(object, name)() 相当于 object.name 调用该name函数

例子用法参考官网地址:

  • hasattr - https://docs.python.org/3.5/library/functions.html#hasattr

  • getattr - https://docs.python.org/3.5/library/functions.html#getattr

  • setattr - https://docs.python.org/3.5/library/functions.html#setattr



作者:全栈运维
链接:https://www.jianshu.com/p/2abff1c1d6fa

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/224315.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号