关于signal.signal处理器的类型提示设置及导入疑问
为signal.signal的处理器添加类型提示及导入说明
所需导入内容
你需要导入以下模块/类型来实现完整的类型提示:
signal:核心信号处理模块types.FrameType:用于标注栈帧参数的类型typing.Callable:用于定义处理器函数的类型签名(Python 3.9+也可使用collections.abc.Callable)
修正后的代码及类型提示
下面是补全类型提示并修正语法错误后的代码:
import signal from types import FrameType from typing import Callable class SomeClass: # 定义处理器的类型别名,方便复用 SignalHandler = Callable[[int, FrameType | None], None] def handler(self, signum: int, frame: FrameType | None) -> None: pass def __init__(self) -> None: signal.signal(signal.SIGINT, self.handler)
关键说明
- signum参数:确实是
int类型,对应操作系统定义的信号编号(比如signal.SIGINT的值为2) - frame参数:类型为
FrameType | None,代表触发信号时的栈帧,部分场景下可能为None - 处理器返回值:必须是
None,信号处理器不允许返回其他值 - 代码修正了原代码的两处语法错误:
__init__方法缺少self参数,signal.signal语句末尾多了冒号
内容的提问来源于stack exchange,提问作者HumbleProgrammer
相关产品推荐
相关产品推荐

