首页 > 解决方案 > 为什么在 Python 中没有提示 self 类型

问题描述

我一直在研究我的代码的类型提示,但注意到 Python 程序员通常不会self在他们的程序中输入提示

即使当我查看文档时,他们似乎也没有输入提示 self,请参见 此处。这是来自 3.10 版的后向声明

    def __init__(self, value: T, name: str, logger: Logger) -> None:

我可以理解为什么在 3.7 中使用前向声明引入类型注释之前这是一个问题

更多信息 在这里这里


这对我来说似乎有用的原因是 mypy 似乎能够捕捉到这个问题的错误

例子:

from __future__ import annotations

class Simple(object):
    def __init__(self: Simple):
        print(self.x)
          

会从 mypy 返回这个

mypy test.py 
test.py:5: error: "Simple" has no attribute "x"
Found 1 error in 1 file (checked 1 source file)

如果您从中删除类型,self则变为

Success: no issues found in 1 source file


标签: pythonmypy

解决方案


mypy 通常处理的类型self不需要显式注释。您遇到了另一个问题 - 没有参数或返回类型注释的方法根本没有进行类型检查。对于没有非self参数的方法,您可以通过注释来避免这种情况self,但您也可以通过注释返回类型来避免这种情况。


推荐阅读