2017-01-05 96 views
-4

是否有方法通过变量名称定义类型提示?从变量名称到类型提示

例子:

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

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

我想有一般(而不是pycharm具体)解决方案。

我想避免一遍又一遍地做手动式的暗示。

请告诉我为什么您对此问题投下了赞成票。我很好奇,乐于学习。

+0

@MooingRawr我在发布之前阅读了您提供的链接。我不明白这可以帮助我。我不想一次又一次地做明确的类型暗示。 – guettli

+0

我不认为将变量名称连接到某种类型是不错的做法。只要你定义了它,就可以使用注释来定义它的类型,以使其更明确,而不是将其定义在可见代码之外的某处 – Alex

+0

@Alex我尽量避免过时的注释。这个评论是什么意思?它告诉我这个叫做“回应”的东西是......惊喜,惊喜......它告诉我这是一个回应。是的,好消息!我喜欢“干净的代码”和“干净的编码器”的作者指南:http://www.informit.com/articles/article.aspx?p=1326509 – guettli

回答

0

添加类型标注到返回的HttpResponse

Python中的变量需要声明的所有方法。它得到的是一个lvalue创建(我的定义,也许有更好的方式来描述这个)

response=handle_request(request) 

如果handle_request()有类型注释,那么就没有必要做类型标注为response

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

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

+0

这是我的首选答案,但我需要等到明天才能接受它。 – guettli

0

添加类型注释的response

def test_foo(): 
    response: django.http.HttpRequest 
    response=handle_request(request) 

所有第一用法见https://www.python.org/dev/peps/pep-0526/

其缺点是response: django.http.HttpRequest需要在范围内的每个第一次使用前付诸表决。据我所知是没有办法通过自动生成的存根文件到每个模块级别只定义一次这个

0

添加类型提示

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

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

这有利于所谓的“类型的注释添加到响应的所有第一次运用”的答案,认为源代码不包含在同一行(response: django.http.HttpRequest)几次

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