整洁的配置辅助设备
anna的Python项目详细描述
安娜80秒
安娜所关心的是 参数 和 配置源 。将参数声明为 应用程序(例如在类上)并在配置源中指定它们的值。 接下来要做的就是将应用程序指向配置源并 让框架发挥作用。
一个例子胜过千言万语
假设我们要构建一个处理车辆的应用程序。我喜欢汽车所以第一件事 我要做的是确保我们得到其中一个:
>>> class Car: ... def __init__(self, brand, model): ... self._brand = brand ... self._model = model >>> >>> your_car = Car('Your favorite brand', 'The hottest model')太好了!我们让用户指定汽车的 品牌 和 型号 ,然后还给他一辆全新的汽车!
现在我们使用anna来声明参数:
>>> from anna import Configurable, parametrize, String, JSONAdaptor >>> >>> @parametrize( ... String('Brand'), ... String('Model') ... ) ... class Car(Configurable): ... def __init__(self, config): ... super(Car, self).__init__(config) >>> >>> your_car = Car(JSONAdaptor('the_file_where_you_specified_your_favorite_car.json'))
相应的json文件如下:
{ "Car/Parameters/Brand": "Your favorite brand", "Car/Parameters/Model": "The hottest model", }
打字有点难,但这有几个优点:
- 我们可以指定参数的类型,anna将处理必要的转换 对我们来说, anna 提供了大量的参数类型,因此它不仅仅是 串!
- 如果我们稍后改变主意并希望添加另一个参数,例如颜色 对于汽车来说,声明一个新的参数 字符串('color') 并将其设置为 类属性;用户需要做的就是在 配置源。请注意,不需要更改任何接口/签名或 将用户输入传送到接收类的其他中间组件;它所期望的 是指向配置源的配置适配器。
- 配置源只能承载多个组件的参数,这意味着 在我们的应用程序中添加新组件时,我们不需要修改中间部分; 我们只需提供配置适配器即可。