如何使用importlib导入models模块下的Model类?(文件名与类名为变量)
解决importlib动态导入类的问题
你出错的核心原因是importlib.import_module()只能用来导入模块(即.py文件或包),不能直接定位到模块里的类。你写的"models.model.Model"里的Model是类名,不是模块名,所以会触发找不到模块的错误。
正确的做法分两步走:
- 先用
importlib.import_module导入目标模块 - 再通过
getattr()从模块中取出对应的类
基础实现代码
import importlib # 第一步:导入models.model模块 target_module = importlib.import_module("models.model") # 第二步:从模块中获取Model类并赋值给NamedModel NamedModel = getattr(target_module, "Model")
适配变量场景的写法
如果你的模块路径和类名都是变量,直接替换参数即可:
import importlib # 假设这两个是动态获取的变量 module_path = "models.model" class_name = "Model" target_module = importlib.import_module(module_path) NamedModel = getattr(target_module, class_name)
这样就能完全满足你用变量动态导入类的需求。
内容的提问来源于stack exchange,提问作者adroit.levees.0r
相关产品推荐
相关产品推荐

