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}
  • 相关阅读:
    委托学习笔记一(调用委托)
    委托和事件— 一个虚构的故事
    WPF中控制窗口状态
    oracle创建DBLINK
    添加路由 route add
    通过脚本执行sql语句
    c#对声音系统的控制
    ProcessBuilder调用外部脚本
    sql server 重新编译所有视图
    silverlight 隐藏ChildWindow 右上角的关闭按钮
  • 原文地址:https://www.cnblogs.com/TF511/p/9850724.html
Copyright © 2011-2022 走看看