python中的反射的实现,是通过hasattr、getattr、setattr、delattr四个内置函数实现的,其实这四个内置函数不只可以用在类和对象中,也可以用在模块等其他地方。
hasattr(key)返回的是一个bool值,判断某个成员或者属性在不在类或者对象中
getattr(key,default=xxx)获取类或者对象的成员或属性,如果不存在,则会抛出AttributeError异常,如果定义了default那么当没有属性的时候会返回默认值。
setattr(obj,key,value)假如有这个属性,那么更新这个属性,如果没有就添加这个属性并赋值value
delattr(key)删除某个属性
class Person(): def __init__(self,name,age): self.name=name self.age=age if __name__=='__main__': li=Person('lili',18) print(hasattr(li,'name')) setattr(li,'age',22) print(getattr(li,'age')) delattr(li,'age') print(getattr(li,'age'))