zoukankan      html  css  js  c++  java
  • 反射

    反射:

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

     主要分为四种方法:

        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}
  • 相关阅读:
    js中“==”与“===”区别
    java中的除法及求余运算特殊性。
    oracle数据库查询历史某一时刻的表数据
    Java多线程总结(转载)
    I/O之Writer-Reader
    I/O之File
    MYSQL之內链接 左链接 右链接 区别
    ubuntu下编译boost
    linux下编译安装boost库
    搭建无线弱网测试环境
  • 原文地址:https://www.cnblogs.com/TF511/p/9850724.html
Copyright © 2011-2022 走看看