zoukankan      html  css  js  c++  java
  • 获取对象的信息之反射

    获取对象的信息之反射

    所谓反射,指的是以字符串额形式来操作(包括:增删改查)对象的属性和方法。

    1. hasattr(object, name)

      用于判断指定的对象object是否有参数name指定的属性和方法

    2. getattr(object, name[, default])

      用于获取指定的对象object中名为name的属性和方法

      如果不指定参数default,那么当object中不存在名为name的属性和方法时抛出AttributeError

      如果指定了参数default,那么当object中不存在名为name的属性和方法时就会返回default

      getattr(object, name)等价于:object.name

    3. setattr(object, name, value)

      用于在指定的对象object中添加或修改名为参数name的属性和方法,添加或修改后的值为value

      setattr(object, name, value)等价于object.name = value

    4. delattr(object, name)

      用于删除指定的对象object中名为参数name的属性或方法

      delattr(object, name)等价于:del object.name

      注意: 只有在不知道对象信息的情况下,才会去获取对象信息。因此,如果可以直接写:object.name,

      就不要写为getattr(object, 'name')。

      class Myclass(object):
          def __init__(self):
              self.x = 1
      
          def do_sth(self):
              print("do_sth被调用")
      
      mc = Myclass()
      
      print(hasattr(mc, 'x')) # True
      print(hasattr(mc, "do_sth")) # True
      print(hasattr(mc, 'y')) # False
      print(getattr(mc, 'x')) # 1
      f = getattr(mc, 'do_sth')
      f()
      # print(getattr(mc, 'y'))#AttributeError
      print(getattr(mc, 'y', 2))
      
      setattr(mc, 'z', 3)
      print(getattr(mc, 'z'))
      
      setattr(mc, 'z', 4)
      print(mc.z)
      
      delattr(mc, 'z')
      print(hasattr(mc, 'z'))
      
  • 相关阅读:
    C#窗体操作的小技巧
    C#操作Xml
    Path类对路径字符串的操作
    Google Maps 基础
    C#时间操作总结
    根据地理坐标计算瓦片行列号
    使用VBA宏批量修改表格
    检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法
    Asp.net实现URL重写
    VS2013利用ajax访问不了json文件——VS2013配置webconfig识别json文件
  • 原文地址:https://www.cnblogs.com/huanyinglvtuan/p/12670891.html
Copyright © 2011-2022 走看看