回调系统 (Utils.callbacks)
回调系统模块提供了一套灵活的回调机制,用于处理异步操作的事件通知和状态更新。
模块概述
该模块包含以下主要组件:
Callbacks
- 基础回调容器类CallbackGroup
- 回调组管理类InstallationCallbackGroup
- 类型化的安装器回调组多个协议接口定义不同场景下的回调签名
基础回调类
- class Utils.callbacks.Callbacks(**kwargs: Callable[[Any], Any])[源代码]
基类:
object
基础回调容器类,用于存储和管理一组回调函数。
- __getitem__(key: str) Callable[[Any], Any] [源代码]
通过键获取回调函数。
- 参数:
key -- 回调函数名称
- 返回:
对应的回调函数,如果不存在则返回空操作函数
回调组管理
类型化回调组
协议接口
下载相关协议
- class Utils.callbacks.IDownloadSingle(*args, **kwargs)[源代码]
单一下载任务信号
单一下载任务的回调协议接口。
- __init__(*args, **kwargs)
安装相关协议
- class Utils.callbacks.IInstallGame(*args, **kwargs)[源代码]
安装游戏信号
游戏安装任务的回调协议接口。
- __init__(*args, **kwargs)
使用示例
基础使用:
from Utils.callbacks import Callbacks, CallbackGroup
# 创建回调函数
def on_start():
print("任务开始")
def on_progress(progress):
print(f"进度: {progress}%")
# 创建回调容器
callbacks = Callbacks(
start=on_start,
progress=on_progress
)
# 调用回调
callbacks.start() # 输出: 任务开始
callbacks.progress(50) # 输出: 进度: 50%
回调组使用:
# 创建回调组
download_callbacks = Callbacks(
start=lambda: print("下载开始"),
progress=lambda p: print(f"下载进度: {p}%")
)
install_callbacks = Callbacks(
start=lambda: print("安装开始"),
finished=lambda: print("安装完成")
)
callback_group = CallbackGroup(
download=download_callbacks,
install=install_callbacks
)
# 使用回调组
callback_group.download.start() # 输出: 下载开始
callback_group.install.finished() # 输出: 安装完成
注意事项
当访问不存在的回调时,会返回一个空操作函数而不是抛出异常
在DEBUG日志级别下,调用空回调时会记录调用堆栈信息,便于调试
协议接口使用了Python的Protocol类型,提供静态类型检查支持
InstallationCallbackGroup提供了类型化的回调访问,增强IDE支持