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