如何在python中拦截对模块变量的访问?

时间:2014-06-02 08:50:08

标签: python

我知道在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时,我试图设置的“拦截器”没有被调用。

0 个答案:

没有答案