从变量名到类型提示

From variable name to type hint

有没有办法通过变量名定义类型提示?

示例:

每次我在我的代码中命名一个变量 response 时,我希望它有一个 django.http.HttpResponse 的类型提示。

我的用例是像 PyCharm 这样的 IDE 的类型提示。到目前为止,我没有用例在 运行 时间对此进行评估。

我想要通用的(而不是 pycharm 特定的)解决方案。

我想避免一遍又一遍地进行手动和显式类型提示。

请告诉我你为什么不赞成这个问题。我很好奇也愿意学习。

向所有 return 一个 HttpResponse

的方法添加类型注释

Python中的一个变量需要声明。它是通过 lvalue(我的定义,也许有更好的描述方式)

创建的
response=handle_request(request)

如果handle_request()有类型注解,那么response就不需要做类型注解了。

这并没有直接回答问题,而是解决了问题背后的问题。

此回答基于用户Alex的评论。谢谢:-)

response

的所有首次使用添加类型注释
def test_foo():
    response: django.http.HttpRequest
    response=handle_request(request)

https://www.python.org/dev/peps/pep-0526/

这有一个缺点,即 response: django.http.HttpRequest 需要在范围内的每次首次使用之前放置。据我所知,没有办法在每个模块级别只定义一次

通过自动生成的存根文件添加类型提示

您可以自动生成包含源代码类型提示的创建 stub files(扩展名为 .pyi)。

我猜这个自动生成不难实现。

这对名为“Add type annotation to all first usages of response”的答案有好处,源代码多次不包含同一行(response: django.http.HttpRequest)

缺点:您需要一个构建步骤来创建存根文件。