简短问题
是否可以调用从 python dir() 函数中检索到的模块?

背景
我正在构建一个自定义测试运行器,并希望能够根据字符串过滤器选择要运行的模块。请参阅下面的示例以了解理想用法。

module_a.py

def not_mykey_dont_do_this():
    print 'I better not do this'

def mykey_do_something():
    print 'Doing something!'

def mykey_do_somethingelse():
    print 'Doing something else!'

module_b.py
import module_a
list_from_a = dir(module_a) # ['not_mykey_dont_do_this', 'mykey_do_something', 'mykey_do_somethingelse']

for mod in list_from_a:
    if(mod.startswith('mykey_'):
        # Run the module
        module_a.mod() # Note that this will *not* work because 'mod' is a string

输出
Doing something!
Doing something else!

最佳答案

getattr(module_a, mod)()
getattr 是一个内置函数,它接受一个对象和一个字符串,并返回属性。

10-06 05:18