# bindconf **Repository Path**: aidings/bindconf ## Basic Information - **Project Name**: bindconf - **Description**: 管理类或方法多个默认配置 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-08-28 - **Last Updated**: 2022-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BindConf > 一个类或方法,可能有多种不同的配置;那么多个类或方法呢,管理起来就比较麻烦, > 因此开发了BindConf用来管理方法对应的多个配置 ## 1. 安装 `pip install git+https://gitee.com/cvding/bindconf.git` ## 2. 使用 ### 2.1 单个类或方法,对应多个配置 > 类A,有两个属性A.x、A.y;有两个配置proj_0和proj_1 #### 2.1.1 类A的定义 ```python class A(object): def __init__(self, x, y): self.x = x self.y = y def show(self): print("A x: %d y: %d" % (self.x, self.y)) ``` #### 2.1.2 类A的多个配置(./configs/A.proj.yaml) ``` yaml A: proj_0: x: 0 y: 1 proj_1: x: 5 y: 8 ``` ### 2.1.3 使用A的两个默认配置 ``` Python from bindconf import BindConf # 导入类A import A bconf = BindConf(funcs=[A]) # 输入可以是字典或yaml文件,或包含yaml文件的文件夹 bconf.bind(conf_dict='./configs/A.proj.yaml') # 生成一个配置为proj_0,类A的实例,并修改了proj_0中配置x的参数 a_A = bconf.build(func_name='A', conf_name='proj_0', default_args={"x":5}) # A x: 5 y: 1 a_A.show() ``` ### 2.2 多个类或方法,对应多个配置 > 类B, 有1个属性B.x; 有两个配置bpro_0, bpro_1 #### 2.2.1 类B的定义 ```python class B: def __init__(self, x): self.x = x def show(self): print("B x: %d" % (self.x)) ``` #### 2.2.2 类B的多个配置(./configs/B.proj.yaml) ```yaml B: bpro_0: x: 12 bpro_1: x: 25 ``` ### 2.2.3 使用A,B的两个默认配置 ```python from bindconf import BindConf import A, B bconf = BindConf(funcs=[A, B]) bconf.bind(conf='./configs') a_A = bconf.build(func_name='A', conf_name='proj_1') b_B = bconf.build(func_name='B', conf_name='bpro_1') # A x: 0 y: 1 a_A.show() # B x: 25 b_B.show() ``` ### 2.3 使用A,B的生成一个项目配置文件 #### 2.3.1 保存一个项目(包含多个模型) ```python from bindconf import BindConf import A, B bconf = BindConf(funcs=[A, B]) bconf.bind(conf='./configs') a_A = bconf.build(func_name='A', conf_name='proj_1') b_B = bconf.build(func_name='B', conf_name='bpro_1') bconf.save('./project/plan_a.yaml') ``` #### 2.3.2 读取配置并生成默认模型 ```python from bindconf import BindConf import A, B bconf = BindConf(funcs=[A, B]) bconf.bind(conf='./project/plan_a.yaml') # {"proj_1": A(x:5, y:8), "bpro_1": B(x:25)} models = bconf.project() ```