我最近决定编写一个帮助类来从模块输出一些信息。它看起来像这样:
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
会有助于做到这一点但事实并非如此。
答案 0 :(得分:2)
您可以cls.__module__
进行查找,并在sys.modules
中查找。