我有少量不同的Python类(每个类代表不同类型的策略)和许多配置(例如参数)。目前我已经在json文件中组织了配置,可能如下所示:
{
"script": "xyz.strategy.strategyA",
"datafile": "//datasrv10//data$//data//bloom.csv",
"assets": ["B EQUITY","A EQUITY"],
...
}
所以,我必须使用某种反射来初始化正确的类。我为此找到了importlib。我设法导入模块。现在每个脚本都是自己的模块,每个模块都有一个具有相同接口的构建函数:
def build(configuration, data):
return Risk(configuration, data)
class Risk(Strategy):
对我来说,所有这些看起来都像是糟糕的老派Java。任何人都可以向我展示Python的亮点吗?
答案 0 :(得分:1)
如果您需要某种配置来进行此设置,那么就没有银弹。您可以使用json,yaml或关系数据库来存储配置。允许将python代码用于配置可能会有一些改进,但如果可以在外部提供配置,则会产生安全问题。
第二步是将配置转换为实际的python类实例,分配正确的参数等。importlib
非常适用于此目的,这里没有太多需要改进的地方。你的类需要某种工厂,只是尽量不抽象(这是非常类似Java而不是pythonic),也许是一种能够仅根据配置片段创建对象的全局方法?