• 获取对象的信息之反射


    获取对象的信息之反射

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

    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'))
      
  • 相关阅读:
    2019.9.18 csp-s模拟测试46 反思总结
    2019.9.17 csp-s模拟测试45 反思总结
    矩阵求导(包含极大似然估计)
    sir
    Square into Squares. Protect trees!(平方数分解平方和)
    最小二乘法
    2.5&2.6 numpy&pandas 笔记
    2.4 python学习笔记
    2.3 python学习笔记
    2.1&2.2python学习笔记
  • 原文地址:https://www.cnblogs.com/huanyinglvtuan/p/12670891.html
Copyright © 2020-2023  润新知