我有一个定义了许多类的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()给了我模块中所有内容的名称,但我似乎无法弄清楚如何从类的名称到 in 模块中的类本身
从模块外部,我可以简单地使用getattr(mod, 'A')
,但我没有模块本身内的self
类模块。
这似乎很明显。有人能告诉我我错过了什么吗?
答案 0 :(得分:9)
import sys
getattr(sys.modules[__name__], 'A')
答案 1 :(得分:5)
你可以把它粉碎成一个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]
答案 2 :(得分:2)
classes = [x for x in globals().values() if isinstance(x, type)]