setattr可以给对象的属性赋值,如果对象没有这个属性则会先创建出这个属性然后赋值,先来看一个简单示例
class Stu:
pass
stu = Stu()
setattr(stu, 'name', '小红')
setattr(stu, 'age', 14)
print(stu.name, stu.age)
定义的Stu类没有任何对象属性,但可以通过setattr函数为对象创建出新的属性并赋值。在定义类时,如果对象属性非常多,就可以使用setattr方法为对象进行初始化操作
class Stu:
def __init__(self):
field_lst = ['name', 'age', 'course', '_class']
for field in field_lst:
setattr(self, field, None) # 所有属性先初始化为None
hasattr可以判断某个对象是否具有某属性
class Stu:
def __init__(self):
field_lst = ['name', 'age', 'course', '_class']
for field in field_lst:
setattr(self, field, None) # 所有属性先初始化为None
stu = Stu()
print(hasattr(stu, 'name'))
print(hasattr(stu, 'score'))
程序输出结果
True
False
getattr的作用于setattr的作用相反,它从对象里获取指定属性的值
class Stu:
pass
stu = Stu()
setattr(stu, 'name', '小红')
setattr(stu, 'age', 14)
print(getattr(stu, 'name'))
print(getattr(stu, 'age'))
QQ交流群: 211426309