9.3、反射

反射:

  • 反射就是可以从对象中搜索出所需的属性
  • 先检测是否存在某属性用hasattr,如果要获取用getattr,如果对属性要进行添加或修改用setattr,如果需要删除用delattr
  • 【如果没有某个属性,getattr会报错,setattr不会报错,delattr会报错】
class A:
    haha=1
    def helo(self):
        pass
a=A()
choice=input("请输入要检测的属性:")
if hasattr(a,choice):##如果有该属性
    print(getattr(a,choice))###获取属性
    #如果是一个函数:f=getattr(a,choice),   f(参数)来调用
else:
    setattr(a,choice,666)
    print(getattr(a, choice))
    print(a.__dict__)###显示的是a的实例变量
    delattr(a,choice)##获取完后尝试删除

print(a.__dict__)###结果显示刚刚新添加的已经被删除
  • 对于需要先判断是否存在某属性的可以多用反射
原文地址:https://www.cnblogs.com/progor/p/8424120.html