python - 使用反射从包中加载和实例化模块?
问题描述
我有一个名为的包(一个文件夹) ,models
其中包含
__init__.py
, model_a.py
, model_b.py
.
我的__init__.py
包含:
from models.model_a import ModelA
from models.model_b import ModelB
在我的main.py
我做
import models
model = get_model(config.use_model) #config.use_model == "ModelA"
def get_model(model):
# This should be equivalent to models.ModelA(**config.ModelA.structure)
return models[model](**config[model].structure)
哪个抛出错误TypeError: 'module' object is not subscriptable
基本上我想要做的是优雅地加载配置中设置的模型。像这样访问配置工作正常。
解决方案
我不知道它是否写但你可以试试这个,
import models
import sys
def get_model(model):
return getattr(models, model)
model = get_model('ModelA')
print(model())
推荐阅读
- python - 提取 HTML 表格并将它们存储在单独的文件中
- c++ - 下一个更大的元素
- vuepress - vuepress dev 没有在本地渲染
- redis - Redis 中的密钥丢失
- ios - 如何使用 Codable 和 Swift 解析这个嵌套的 JSON?
- python - 在python中将排序的链表合并到一个排序的链表时出错
- javascript - Javascript禁用鼠标光标并仅使用键盘光标
- reactjs - 如何解决 formData() 使用 axios 发送的问题
- python - karatsuba的整数乘法算法python
- r - 更改 R 中蜂群图中一个元素的颜色