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}
  • 相关阅读:
    人心散了、项目必然要败(转自CSDN)
    sql server加锁机制
    数据库事物隔离级别
    aop学习
    数据库加锁(转)
    托管代码和非托管代码效率的对比。
    day05 Linux文本处理命令
    day04 CentOS 异常,问题解决方法
    day02 Linux系统介绍与安装
    linux常用命令的英文单词缩写
  • 原文地址:https://www.cnblogs.com/TF511/p/9850724.html
Copyright © 2011-2022 走看看