寻找由字符串指定的 modules/classes
Looking for modules/classes specified by string
我想在继承了一个"base class"的模块中找到所有classes,并且该模块由一个字符串指定。
例如
for c in find_classes('robo.extras.contrib') :
o = c()
o.process(argv = self.argv[1:])
在上面的例子中,find_classes
遍历 robo.extras.contrib
中的所有模块,寻找 class 继承了 class 方法 process
的模块,实例化它并运行该方法。
我一直在寻找 python.org 但似乎没有找到这个问题的答案,如果有人能给我指明正确的方向,或者甚至在这里给我一个快速示例,我会非常感谢开心
谢谢:)
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'):
...
我想在继承了一个"base class"的模块中找到所有classes,并且该模块由一个字符串指定。
例如
for c in find_classes('robo.extras.contrib') :
o = c()
o.process(argv = self.argv[1:])
在上面的例子中,find_classes
遍历 robo.extras.contrib
中的所有模块,寻找 class 继承了 class 方法 process
的模块,实例化它并运行该方法。
我一直在寻找 python.org 但似乎没有找到这个问题的答案,如果有人能给我指明正确的方向,或者甚至在这里给我一个快速示例,我会非常感谢开心
谢谢:)
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'):
...