文档更新与.idea/
忽略项修正
- 在`app/config.py`中为`Config`类添加了详细的中文文档说明,增强了代码可读性和配置管理的清晰度。 - 修改`.gitignore`以忽略`.idea/`目录,适用于 JetBrains IDEs 的项目,保持工作区的整洁。
This commit is contained in:
parent
36a5f9cfd3
commit
7e4c3f1d1c
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -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/
|
||||||
|
|
|
@ -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)
|
Loading…
Reference in New Issue
Block a user