python3-面对对象-反射

'''
反射:
    通过字符串的形式操作对象相关的属性。
    python中的一切事物都是对象(都可以使用反射)
    
    hasattr(object,name) 判断object中有没有一个name字符串对应的方法或属性
    
    getattr(object, name, default=None)
    获取obj内name属性的值,即:object.name 若找不到属性 自动返回None
    
    setattr(object, name, value)
    设置obj内name属性的值为value
    
    delattr(obj, name)
    删除obj内name属性
反射优点:
    1.实现可插拔机制
        if hasattr(f1,'get'):
            func_get=getattr(f1,'get')
            func_get()
        else:
            print('---->不存在此方法')
            print('处理其他的逻辑')
        
    2.实现动态导入模块
    
'''
class test :
    def __init__(self,name,age):
        self.name = name
        self.age = age


obj = test('t1',18)

print(hasattr(obj,'name'))
print(getattr(obj,'name',None))
setattr(obj,'sex','male')
print(obj.__dict__)
delattr(obj,'sex')
print(obj.__dict__)

猜你喜欢

转载自blog.csdn.net/qq_33961117/article/details/82108319