【人工智能概论】012良好的代码书写习惯——参数的集中化管理

【人工智能概论】012良好的代码书写习惯——参数的集中化管理

文章目录

  • 【人工智能概论】012良好的代码书写习惯——参数的集中化管理
  • 一. 参数集中管理的意义
  • 二. 如何进行参数的集中化管理
  • 三. 具体实现
    • 3.1 构建参数管理的类ModelConfig与测试用的类Collage
    • 3.2 参数管理与保存的测试
    • 3.3 检验参数加载的功能


一. 参数集中管理的意义

  • 传统编程讲究的是一个随心所欲,尤其是对参数的管理十分混乱,一旦代码的体量变大,维护难度会大大提高。
  • 因此,如果能把参数给集中管理,势必会提高工作效率,更容易管理参数,也更容易进行进行部署。

二. 如何进行参数的集中化管理

  • 首先,构建管理参数的类ModelConfig,类中的属性为被管理的参数;
  • 其次,类中再构建两个方法,分别用于保存参数、加载参数;
  • 最后,通过类的实例化对象config,实现对参数进行赋值。

三. 具体实现

3.1 构建参数管理的类ModelConfig与测试用的类Collage

# model_config.py

import json

# 构建参数管理类ModelConfig
class ModelConfig:
    def __init__(self,  # 把要用到的参数在这声明
                 collage_name=None,
                 collage_id=None
                 ):
        self.collage_name = collage_name
        self.collage_id = collage_id

    def save(self, save_path):  # save_path参数文件的保存路径,保存成json文件
        f = open(save_path, "w")
        d = {
            "collage_name": self.collage_name,
            "collage_id": self.collage_id
        }
        d = json.dumps(d)
        f.write(d)
        f.close()

    def load(self, load_path):
        # load_path是参数导入的路径,加载的是json文件,直接构建一个类不做赋值,然后执行加载文件
        d = open(load_path).read()
        d = json.loads(d)

        self.collage_name = d["collage_name"]
        self.collage_id = d["collage_id"]

# 构建测试用的类Collage
class Collage:
    def __init__(self, config):
        self.collage_name = config.collage_name
        self.collage_id = config.collage_id

    def print_collage_inf(self):
        print("the collage is named ", self.collage_name)
        print("the collage's id is ", self.collage_id)

3.2 参数管理与保存的测试

# config_test.py

# 加载参数管理类与测试用的类
from model_config import ModelConfig,Collage

# 实例化参数管理类,并进行参数赋值
config = ModelConfig("大连理工大学", "10141")

# 实例化Collage类,并且借助config进行参数赋值
collage_test = Collage(config)

# 执行测试的函数
collage_test.print_collage_inf()

# 保存config中的参数与参数值
config.save('./config.json')

3.3 检验参数加载的功能

# load_config.py

# 加载参数管理类与测试用的类
from model_config import ModelConfig,Collage

# 生成新的参数管理类对象但不赋值
config1 = ModelConfig()

# 用load函数加载已经保存好的参数文件
config1.load('./config.json')

# 生成新的config测试类的实例,并用config1进行赋值
collage_test1 = Collage(config1)

# 执行验证函数
collage_test1.print_collage_inf()

你可能感兴趣的:(【人工智能概论】,python,json)