Python中如何动态引用已导入模块的文件名访问其内部属性?
实现方案
该需求可以实现,你可以使用Python标准库importlib提供的动态导入能力完成,同时还能解决你现有写法中重复导入foo被覆盖的问题。
示例代码
# 导入标准库的动态导入方法 from importlib import import_module # 把需要加载的模块名存入列表 target_modules = ["file1", "file2", "file3"] for mod_name in target_modules: # 动态导入对应模块,得到模块对象 current_mod = import_module(mod_name) # 直接访问模块内的foo字典即可 current_foo = current_mod.foo # 此处编写你需要对current_foo执行的逻辑 ...
补充说明
- 如果三个文件存放在子包下,只需修改
target_modules内的模块路径即可,比如存放在common包下时,模块名写为"common.file1"格式 - 动态导入得到的模块对象和直接用
import file1得到的对象完全一致,模块内的所有属性、方法、类都可以正常访问 - 你当前的写法存在逻辑缺陷:连续三次
from xxx import foo会让foo变量被后导入的值覆盖,最终只能获取到file3中的foo,无法访问前两个文件的foo内容
内容的提问来源于stack exchange,提问作者Cuttles
相关产品推荐
相关产品推荐

