寻找string指定的模块/类

时间:2017-05-27 16:18:09

标签: python python-module

我想在模块中找到继承"基类"的所有类,并且模块由字符串指定。
E.g。

:nth-child(n)

在上面的示例中,for c in find_classes('robo.extras.contrib') : o = c() o.process(argv = self.argv[1:]) 查看find_classes中所有模块,查找使用方法robo.extras.contrib继承类的类,实例化它并运行该方法。

我一直在浏览python.org但似乎没有找到这个问题的答案,如果有人能指出我正确的方向,或者甚至在这里给我一个快速的样本我会非常高兴。

谢谢:)

1 个答案:

答案 0 :(得分:0)

import inspect, importlib
def find_classes(module, with_method=None):
    module = importlib.import_module(module)
    return [
        c for _, c in inspect.getmembers(module, inspect.isclass)
        if not with_method or with_method in dir(c)
    ]

然后:

for c in find_classes('robo.extras.contrib', with_method='process'):
...