Python监听拦截特性的访问学习笔记

  发布日期:   2017-08-16
  最新修改:   2020-10-17
  阅读次数:   47 次
  • 更多分享:http://www.catbro.cn

  • Python中拦截对象的所有特性访问是很简单的,获取该能力同样是通过我们的魔法方法

  • 1、_getattrbute_(self,name):当name特性被访问时自动调用

  • 2、_setattr_(self,key,value):给name对象赋值时自动调用

  • 3、-delattr_(self,name):当删除name特性时自动调用

      class MyClass:
    
          name = 'ss';
    
          def say(self):
              pass;
        def __setattr__(self, key, value):
            print('setattr',key,value)

        def __delattr__(self, item):
            print('delattr',item)

        def __getattribute__(self, item):
            print('getattrbute',item)
  • 调用:

      m = MyClass();
    
      m.name = 'hello'
    
      print(m.name)
    
      del m.name
  • 输出:

setattr name hello getattrbute name None delattr name

  • 可以看到相应的魔法方法都被自动调用类。
  • 当然,我们需要灵活的运用它,才能发挥其最大的威力

   转载规则

《Python监听拦截特性的访问学习笔记字》GajAngels 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。