setattr, hasattr, getattr

1. setattr

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

2. hasattr

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

3. getattr

getattr的作用于setattr的作用相反,它从对象里获取指定属性的值

class Stu:
    pass

stu = Stu()
setattr(stu, 'name', '小红')
setattr(stu, 'age', 14)

print(getattr(stu, 'name'))
print(getattr(stu, 'age'))

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案