反射

反射:

  指的是通过字符串来操作对象属性的增删改除

 主要分为四种方法:

    hasattr :    查看字符串 是否 存在 返回---> Ture / False

    getattr:    获取对象属性的 并返回

    setattr : 对 对象属性值的 修改 (属性=值存在的情况下) 添加 (属性=值不存在的情况下

    delattr    删除指定对象的(属性=值) ps: 没有找到则报错

如下例:

class Foo:       
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def tell_info(self):
        print('%s:%s' %(self.name,self.age))

obj=Foo('egon',18)
# 1、hasattr   查看属性的值是否存在
print
(hasattr(obj,'name')) #obj.name print(hasattr(obj,'tell_info')) #obj.tell_info 结果: True True
#2、getattr  获取属性的值 
res=getattr(obj,'name') #res=obj.name
print(res)
res=getattr(obj,'xxx',None)
print(res)

结果:
egon
None
#3、setattr  对属性值进行 修改或添加
setattr(obj,'age',38)
setattr(obj,'sex','male')
print(obj.__dict__)
print(obj.sex)


结果:
{'name': 'egon', 'age': 38, 'sex': 'male'}
male
#4、delattr     删除属性的值‘xxxxe’
delattr(obj,'name')
if hasattr(obj,'xxxxe'):    #如果对象属性的值‘xxxxe’存在 则 删除。   
    delattr(obj,'xxxxe')
print(obj.__dict__)

结果:
{'age': 18}
原文地址:https://www.cnblogs.com/TF511/p/9850724.html