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'