python - 如果我想将模块作为字符串导入,如何使用 from import?

标签 python arrays import module

<分区>

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

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

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 不允许我这样做。

最佳答案

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 ,例如。 g.

class MyModulesHolder(dict):
    pass

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

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

关于python - 如果我想将模块作为字符串导入,如何使用 from import?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29059361/

相关文章:

python - 如果就地修改列表,Traitlet 列表将不会运行回调

python - 从两个一维向量 a、b 创建 bool 数组 A,如果 a[i]==b[j],则 A[i,j] 为 True

python - 本地化浮点符号

python - 无法通过自定义 cloudformation 资源调用 lambda 函数

php - mysql 多维数组查询

javascript - Json 格式的对象到带有新键的简单数组

java - NullPointEException 和对象数组的长度

vb.net - 在VB.net中将csv数据转换为DataTable

java - 使用 Maven 构建后,Eclipse 中缺少库

python - Python 3 中 execfile 的替代方案?