python的getattr和setattr_getattr函数和setattr函数

python内置的两个看起来很简单,一般也不怎么用得上的函数,getattr函数和setattr函数。getattr函数用于获取对象的某个属性的值,setattr函数用于设置对象的某个属性值。

getattr函数

获取对象的某个属性值,如果属性不存在,而且又没有提供default值,抛出AttributeError。

以上代码首先用dir查看了10这个int对象的所有属性,然后获取bit_length属性,发现是一个函数,获取real属性,就是10。再获取一个浮点数10.12345的real属性,再获取一个不存在的kkkk属性,不过提供了默认值abcde,返回abcde,因为kkkk属性不存在。如果不提供默认值,获取不存在的kkkk属性值,抛出AttributeError异常。

python还有一个内置函数hasattr,就是通过getattr来实现的, This is implemented by calling getattr(object, name) and seeing whether it raises an AttributeError or not.)

setattr函数

顾名思义,就是设置对象的某个属性值。比较有趣的一个细节是,被设置的属性,可以是对象还不存在的属性。不过只能对自定义的对象进行这种操作,内置对象不可以。

>>> class person():

... def __init__(self, age):

... self.age = age

...

>>> p = person(40)

>>> p.age

40

>>> setattr(p, 'gender', 'male')

>>> p.gender

'male'

>>> setattr(p, 'age', 100)

>>> p.age

100

person这个class,一开始只有age属性,后通过setattr函数,增加了gender属性。我们其实本来就可以对对象任意增加不存在的属性值,只是如果使用setattr函数,带来一个好处,即属性的名称也可以是动态的,比如属性的名称通过某个变量来获取。

-- EOF --

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值