python getattr setattr_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

## 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函数

例子用法参考官网地址:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值