我正在使用 Python 的类型提示系统,并尝试为与现有函数类型类似的函数创建类型别名,但多了一个参数。以下是我尝试过的方法:
from typing import Callable
# Original function type
RK_function = Callable[[float, int], int]
# Attempted new function type with an additional int argument
RK_functionBIS = Callable[[*RK_function.__args__[:-1], int], int]
我预期 RK_functionBIS 表示 Callable[[float, int, int], int],直接运行时确实如此,无需使用 mypy 检查。但是,当我运行 mypy 进行类型检查时,出现此错误:text
错误:无效的类型别名:表达式不是有效类型 [valid-type] Q
截至目前,Python 不支持直接提取
Callable
别名的参数以用于其他类型。但是,如果您的代码片段代表了您正在解决的问题,那么您的s 看起来就像完全由位置专用参数RK_function
组成,因此您至少可以重构出参数部分。请参阅mypy Playground:与 dROOOze 的代码完全相同,但我为 bis 添加了具体值