我有一个定义了许多类的python模块:
class A(object): def __call__(self): print "ran a" class B(object): def __call__(self): print "ran b" class C(object): def __call__(self): print "ran c"
从模块中,我如何添加一个给我所有类的属性?
dir()给出了我模块中所有内容的名称,但我似乎无法弄清楚如何从类的名称到模块内的类本身.
从模块外部,我可以简单地使用getattr(mod, 'A')
,但我没有self
模块本身内的那种模块.
这似乎很明显.有人能告诉我我错过了什么吗?
import sys getattr(sys.modules[__name__], 'A')
你可以把它粉碎成一个for语句,但那里有杂乱的代码重复.
import sys import types this_module = sys.modules[__name__] [x for x in [getattr(this_module, x) for x in dir(this_module)] if type(x) == types.ClassType]