我知道在python中我可以重载任何类的方法 getattribute 来拦截对其属性的访问(如果这些属性存在或者不存在)。
由于模块也是对象,我想知道如何使用模块变量。
我尝试创建这样的模块:
def foo(_, name):
print 'Fetching attribute ' + name
return object.__getattribute__(name)
globals()['__getattribute__'] = foo
import sys
sys.modules[__name__].__dict__['__getattribute__'] = foo
my_module_var = 9
但是当我导入它并访问my_module.my_module_var
时,我试图设置的“拦截器”没有被调用。