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

mypy是否要求__init__添加-> None注解?两类代码检测矛盾求解

mypy对__init__返回类型检测的差异原因及注解要求

差异原因

  • 当__init__方法包含self之外的其他参数时,mypy会自动推断其返回类型为None,因此即使没有显式添加-> None注解,也能通过类型检测。
  • 当__init__方法仅包含self一个参数时,mypy不会自动推断返回类型。在严格类型检查模式下,mypy要求所有函数(包括特殊方法)必须有明确的返回类型注解,此时缺少-> None就会触发检测错误。

__init__的注解要求

mypy并非强制所有场景下都必须给__init__添加-> None注解:

  • 若__init__带有self之外的参数,无需显式标注返回类型,mypy会自动处理。
  • 若__init__仅包含self参数,在严格模式下必须显式添加-> None注解才能通过检测;宽松模式下可能不会报错,但从代码规范角度,建议始终显式标注返回类型。

修正后的无参数__init__代码示例:

class A:
    def __init__(self) -> None:
        pass

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:05:33