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

Python中如何标注__init__方法返回自身类?

关于Python中__init__方法的返回类型标注问题

首先明确结论:不能给__init__方法标注返回类本身,原因如下:

  1. __init__的语法规则
    Python规定,__init__是实例的初始化方法,它的唯一作用是接收已由__new__创建好的实例(即self参数)并完成属性初始化,必须返回None。如果强行让__init__返回非None值,Python解释器会直接抛出TypeError。

  2. 类型标注的规范
    语言服务器默认给__init__标注() -> None是完全符合Python类型规范的。虽然普通函数可以自由标注返回类型,但__init__属于特殊方法,有严格的返回值限制,类型检查工具(如mypy、pyright)也会对__init__的非None返回标注报错。

  3. 正确的实例类型标注方式
    如果需要标注返回当前类实例的场景,应该用在工厂方法(比如类方法)中,使用Self类型(Python 3.11+原生支持,低版本可从typing_extensions导入):

from typing import Self

class Tree:
    def __init__(self) -> None:
        self.value = 0

    @classmethod
    def create_empty_tree(cls) -> Self:
        return cls()

内容的提问来源于stack exchange,提问作者Miguel Cruz Santiago

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:10:43