当前位置:  开发笔记 > 编程语言 > 正文

如何从当前的python模块动态获取类集?

如何解决《如何从当前的python模块动态获取类集?》经验,为你挑选了2个好方法。

我有一个定义了许多类的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模块本身内的那种模块.

这似乎很明显.有人能告诉我我错过了什么吗?



1> Igal Serban..:
import sys
getattr(sys.modules[__name__], 'A')



2> strager..:

你可以把它粉碎成一个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]

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有