访问子类'模块的全局变量

时间:2014-03-23 20:42:34

标签: python

我最近决定编写一个帮助类来从模块输出一些信息。它看起来像这样:

class VarPrinter(object):
    @classmethod
    def save(cls):
        globals = cls.globals
        #do stuff with globals...
            for i in things_to_output:
            ...

# subclass in another module
# e.g. in foo.py
class FooPrinter(VarPrinter):
    things_to_output = ('foo', 'bar')
    globals = globals()

问题是:有没有办法让globals()数组中的VarPrinter被子类化,这样我就不需要像globals = globals()那样明确地传递它。换句话说,我想要的解决方案就好像我在子类的模块中重复了baseclass的代码。最初我认为eval会有助于做到这一点但事实并非如此。

1 个答案:

答案 0 :(得分:2)

您可以cls.__module__进行查找,并在sys.modules中查找。