反射

getatter

    只要是a.b这种结构,都可以使用反射.

    用对象\类\模块反射,都只有一下场景

  这种结构有两场景

    a.b  b是属性或者变量值

      getattr(a,'b')==a.b

    a.b()  b是函数或者方法

      a.b()

        getattr(a,''b')()

      a.b(*arg1,**kwarg)

        getattr(a,''b')(*arg1,**kwarg)

    如果是本文件中的内容,不符合a.b这种结构

      直接调用func()

        getattr(sys.modules[__name__],''func'')()

      直接使用类名person()

        getattr(sys.modules[__name__],'person')()

      直接使用变量名print(a)

        getattr(sys.modules[__name__],'a')()

 

 

setattr  只是用来修改或者添加属性\变量,不能用来处理函数或者是其他方法

  a.b=value

  setatte(a,'b',value)

 

delattr  只用来删除 属性\变量

    del  a,b 删除属性  相当于删除了a对象当中的b属性

 

posted @ 2019-04-01 14:03  哈哈骄傲  阅读(87)  评论(0编辑  收藏  举报