python内置函数getattr(),hasattr(),setattr(),delattr()【属性相关】

getattr(object,name [,default ] )
返回对象的指定属性的值。 名称必须是字符串。如果字符串是对象属性之一的名称,则结果是该属性的值。例如,相当于 。如果指定的属性不存在,则提供默认值,否则返回。

In [1]: class Y():
   ...:     def __init__(self, name):
   ...:         self.name = name
   ...:

In [2]: y = Y('name')

In [3]: y.name
Out[3]: 'name'

In [6]: getattr(y, 'name')  #等同于y.name
Out[6]: 'name'

In [7]: getattr(y, 'x', '没有这个属性')  
Out[7]: '没有这个属性'

hasattr(object,name )
参数是一个对象和一个字符串。结果是True如果字符串是对象的属性之一的名称,False如果不是。(这是通过调用和查看是否引发异常来实现的。)

In [8]: hasattr(y, 'name')
Out[8]: True

In [9]: hasattr(y, 'x')
Out[9]: False

setattr(object,name,value )
这是对应的getattr()。参数是一个对象,一个字符串和一个任意值。该字符串可以命名现有的属性或新的属性。该函数将该值赋给该属性,只要该对象允许。例如,setattr(y, ‘foobar’, 123)相当于y.foobar = 123 。

In [10]: setattr(y, 'foobar', 123)

In [11]: y.foobar
Out[11]: 123

delattr(object,name )
这是一个相对的setattr()。
参数是一个对象和一个字符串。该字符串必须是对象属性之一的名称。该函数删除指定的属性,只要该对象允许。例如,delattr(x, ‘foobar’)相当于del x.foobar。

In [12]: delattr(y, 'foobar')

In [13]: y.foobar
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-13-562eeae798ca> in <module>()
----> 1 y.foobar

AttributeError: 'Y' object has no attribute 'foobar'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值