整洁的配置辅助设备

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') 并将其设置为 类属性;用户需要做的就是在 配置源。请注意,不需要更改任何接口/签名或 将用户输入传送到接收类的其他中间组件;它所期望的 是指向配置源的配置适配器。
  • 配置源只能承载多个组件的参数,这意味着 在我们的应用程序中添加新组件时,我们不需要修改中间部分; 我们只需提供配置适配器即可。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何使用外部java程序在minecraft中移动minecraft角色的相机   java输出文本文件中的变量   java LazyLoadingException在我尝试从多通关系获取对象时出现   java json rest API的错误:ClassCastException:org。json。无法将JSONObject强制转换为组织。json。杰索纳雷   java BigInteger。C中的intValue()等价物#   java大写所有字符,但不包括带引号字符串中的字符   java获取特殊字符   javascript为什么Selenium中的所有getX()调用都需要这么长时间?   rabbitmq rabbitmq java客户端并行消费   如何使用selenium Java在popover窗口中提取文本   对象在java中构造一类对象   java Room数据库未实现   json JSONObject可以使用java保存大的格式化双值吗?   有时限的旅行推销员   java HttpsURLConnection openConnection查询   java无法使用Spring@Entity注释创建MySQL表   lambda Java 8仅映射到值类型集合   java提供OSGi服务而不实现接口   java单个对象重写对象数组,不确定原因