You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复mypy报错:重载函数签名1与2返回类型不兼容重叠

解答:mypy重载签名重叠与返回类型不兼容问题

1. 两个重载为何出现重叠?

你可能觉得Literal[False]和Literal[True]是完全互斥的参数约束,但问题出在普通bool类型变量上:如果调用时传入一个类型为bool的变量(不是直接写True/False字面量),这个变量的类型是bool——它是Literal[False]和Literal[True]的共同超类型,此时这个调用会同时匹配两个重载的签名,mypy就判定为重载重叠。

另外,第一个重载给skip_deserialization设了默认值False,但mypy在检查重载兼容性时,会考虑所有可能的调用场景,普通bool变量的情况就是触发重叠判定的关键。

2. 返回类型为何被判定不兼容?

虽然两个返回类都继承自api_client.ApiResponse,但mypy对重载的要求是:如果存在某个参数组合能匹配多个重载,这些重载的返回类型必须互相兼容。而response_200.ApiResponse和api_response.ApiResponseWithoutDeserialization是不同的子类(彼此之间无继承关系),mypy认为这两个类型无法互相兼容,因此报错。

哪怕它们有共同基类,mypy也需要每个参数组合对应唯一确定的返回类型,不能让同一个调用同时可能返回两种不同的子类,否则类型检查的准确性就无法保证。


内容的提问来源于stack exchange,提问作者spacether

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 11:27:34