目录

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

目录
  • 更多分享: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

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