python - 为什么在 Python 中没有提示 self 类型

标签 python mypy

我一直在研究类型提示我的代码,但注意到 Python 程序员通常不会键入提示 self在他们的节目中
即使我查看文档,他们似乎也没有输入提示 self,请参阅
here .这是来自 3.10 版的前向声明

    def __init__(self, value: T, name: str, logger: Logger) -> None:
我可以理解为什么在 3.7 中引入带有前向声明的类型注释之前,这是一个问题
更多信息
herehere

这对我来说似乎有用的原因是 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

  • self有什么原因吗?没有注释或者这是唯一的约定?
  • 是否有我遗漏的权衡或我的注释 self由于某种原因错了?
  • 最佳答案

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

    关于python - 为什么在 Python 中没有提示 self 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63906805/

    相关文章:

    python 或运算符(operator)模块

    python - 列表理解合并python中的各种列表

    python - 在 Pandas 中,inplace = True 是否被认为是有害的?

    python - 如何输入提示返回作为参数传递的类实例并具有默认值的方法?

    python - 查找从一个列表中的点到另一个列表中的点的最小距离之和?

    python - 如何禁用 django 中的脆皮表单字段

    python - Mypy + FastAPI response_model

    python - 在关键字参数字典之前使用默认参数对方法调用进行类型检查

    python - mypy 错误 - 尽管使用了 'Union',但类型不兼容

    python - mypy:定义动态字典中特定键的类型