python的反射(自省) 就是自己检查自己,自己操作自己的各个属性值时各种返回状态 python面向对象属性分为:实例属性(变量)和方法属性(函数方法,动作) #反射 # class School: # name ="SB" # def __init__(self,name): # self.name1 = name # def test(self): # print("测试下反射") # def __getattr__(self, item):#调用的属性在类属性或者实例属性中不存在执行 # print("测试下反射get") # def __delattr__(self, item):#删除实例的属性时执行,不存在不会报错 # print("测试下delattr反射") # def __setattr__(self, key, value):#设置或者添加实例属性时执行 # print("测试下setattr反射") # # s = School("sb") # print(s.__dict__) #s.__dict__["tag"] = False # print(hasattr(s,"name")) #查找类或者实例中的属性,存在返回Ture 不存在返回Flase # print(getattr(s,"name1111","属性不存在"))#获取实例或者类中的属性,存在返回实例或者类的属性值,不存在提示默认设置的属性 #或者报错 # setattr(s,"name","2")#设置、添加实例属性值 如果实例的属性存在则是设置操作。不存在则是添加操作 # #del s.name #delattr(s,"name")#删除实例属性值,没有则报AttributeError
|