setattr() 用来创建属性,经常用在创建类时候,在 init 方法中如果为了以后再加上某些属性,可以留一个关键字参数
setattr() 接受三个参数 setattr(对象,属性名,属性值)
class Person(object):
def __init__(self,name,gender,birth,**kw):
self.name = name
self.gender = gender
self.birth = birth
for i,v in kw.iteritems():
setattr(self,i,v)
xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student')
print xiaoming.name
print xiaoming.job
>>>Xiao Ming
>>>Student
getattr(对象,属性名称,返回值) 用来查看对象的某一个属性值,如果属性不存在,则返回默认值,这里如果没有设置默认值,会报错。
>>> getattr(s, 'age') # 获取age属性,但是属性不存在,报错:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Student' object has no attribute 'age'
>>> getattr(s, 'age', 20) # 获取age属性,如果属性不存在,就返回默认值20:
20