文档更新与.idea/忽略项修正

- 在`app/config.py`中为`Config`类添加了详细的中文文档说明,增强了代码可读性和配置管理的清晰度。
- 修改`.gitignore`以忽略`.idea/`目录,适用于 JetBrains IDEs 的项目,保持工作区的整洁。
This commit is contained in:
moyanj 2024-09-09 15:44:58 +08:00
parent 36a5f9cfd3
commit 7e4c3f1d1c
2 changed files with 46 additions and 2 deletions

2
.gitignore vendored
View File

@ -159,4 +159,4 @@ cython_debug/
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear # and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder. # option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/ .idea/

View File

@ -3,12 +3,38 @@ import json5
import app.env as env import app.env as env
class Config: class Config:
"""
配置类用于加载和管理应用配置
该类通过读取配置文件并将内容映射到实例属性中使得配置项可以像访问普通属性一样被访问
它支持递归加载字典类型的配置项以及直接加载列表和基本数据类型的配置项
"""
def __init__(self): def __init__(self):
"""
初始化Config实例从配置文件中加载配置并更新实例属性
"""
# 加载配置文件并指定编码为utf-8确保中文字符正确解析
self._conf_Dict = json5.load(os.path.join(env.dirs.user_config_path, "config.json"), encoding="utf-8") self._conf_Dict = json5.load(os.path.join(env.dirs.user_config_path, "config.json"), encoding="utf-8")
# 设置实例的名称,用于标识配置类型
self.__name__ = "<Standard Dictionary>" self.__name__ = "<Standard Dictionary>"
# 更新实例属性,将配置项映射为可直接访问的属性
self.update() self.update()
def __getattr__(self, name): def __getattr__(self, name):
"""
当访问不存在的属性时尝试从配置字典中获取相应的值
参数:
name (str): 试图访问的属性名
返回:
配置字典中的对应值
异常:
如果配置字典中也没有该属性名则抛出AttributeError
"""
# 检查配置字典中是否存在该属性名
if name in self._conf_Dict: if name in self._conf_Dict:
return self._conf_Dict[name] return self._conf_Dict[name]
else: else:
@ -17,17 +43,35 @@ class Config:
) )
def update(self): def update(self):
"""
更新实例属性将配置字典中的内容映射到实例属性中
该方法主要处理三种类型的配置项
1. 字典类型递归创建Config实例并设置属性
2. 列表类型遍历列表对字典项创建Config实例其他项保持不变
3. 基本数据类型直接设置实例属性
"""
# 遍历配置字典中的所有项
for k, v in self._conf_Dict.items(): for k, v in self._conf_Dict.items():
# 如果值是字典类型递归创建Config实例
if isinstance(v, dict): if isinstance(v, dict):
setattr(self, k, Config(v)) setattr(self, k, Config(v))
# 如果值是列表类型对列表中的字典项创建Config实例
elif isinstance(v, list): elif isinstance(v, list):
setattr( setattr(
self, self,
k, k,
[Config(item) if isinstance(item, dict) else item for item in v], [Config(item) if isinstance(item, dict) else item for item in v],
) )
# 如果值是基本数据类型,直接设置实例属性
else: else:
setattr(self, k, v) setattr(self, k, v)
def __str__(self): def __str__(self):
return str(self._conf_Dict) """
返回配置字典的字符串表示形式
返回:
配置字典的字符串形式
"""
return str(self._conf_Dict)