您的位置:首页 > 编程语言 > Python开发

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

2017-11-15 11:37 453 查看
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'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: