反射

来源:互联网 发布:网页版淘宝看微淘 编辑:程序博客网 时间:2024/06/11 04:29
'''    反射就是在程序运行的时候,对程序的状态,属性,方法通过字符串的形式进行修改'''class Person:    def show(self):        print('person show')person = Person()'''    反射的四种方法    getattr(obj,attr,default=None):        获取对象的指定属性或方法,可设置默认值,查询不到的时候返回默认值    hasattr(obj,attr)        判断对象中是否存在指定的属性    setattr(obj,attr,value)        设置对象中的属性或方法    delettr(obj,attr)        删除对象中的指定属性'''#判断对象是否存在name属性if not hasattr(person,'name'):    print('has no attribute named name')    print('add name to the object')    #没有则添加name属性    setattr(person,'name','godme')#获取属性并打印,测试是否添加成功print(getattr(person,'name'))#定义方法def show():    print('out show')#通过反射修改方法setattr(person,'show',show)#获取并执行,方法不需要self参数getattr(person,'show')()#删除指定方法delattr(person,'name')#获取失败,删除成功print(getattr(person,'name'))