如果我想将模块导入为String,如何从导入使用?

时间:2015-03-15 09:59:43

标签: python arrays import module

我有一个数组中的模块名称列表。 我想从已导入的类中导入所有这些模块。 好像我不能使用来自TestModule __import __(名称)的

我该怎么做?这就是我所拥有的:

import MainModule
arr = \
    ['Module1', 'Module2', 'Module3', 'Module4', 'Module5']
for string in arr:
     # Use FROM  to import the sub classes somehow
     from MainModule __import__(string)

当然Python不允许我这样做。

1 个答案:

答案 0 :(得分:1)

import MainModule
arr = \
    ['Module1', 'Module2', 'Module3', 'Module4', 'Module5']
for string in arr:
    globals()[string] = getattr(MainModule, string)

可能会对您有所帮助,尽管修改globals()并不是很优雅。

更好的

modules = {string: getattr(MainModule, string) for string in arr}

然后用modules做任何你想做的事,e。克。

class MyModulesHolder(dict):
    pass

modules = MyModulesHolder()
modules.__dict__ = modules
modules.update({string: getattr(MainModule, string) for string in arr})

这样你就可以modules.Module2.whatever()