从变量名称到类型提示

时间:2017-01-05 14:29:44

标签: python type-hinting

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

示例:

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

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

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

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

请告诉我你为什么要对这个问题进行投票。我很好奇并愿意学习。

3 个答案:

答案 0 :(得分:2)

向返回HttpResponse

的所有方法添加类型注释

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

handle_request()

如果response有类型注释,则无需为include("filemaker.php"); $id = "152810"; $fm = new FileMaker('mySales', 'myhost', 'admin','passw0rd'); $findCommand = $fm->newFindCommand("sales"); $findCommand->addFindCriterion("_kpnID",'>'.$id); $result = $findCommand->execute(); if (FileMaker::isError($result)) { echo($result->getMessage()); return; } $records = $result->getRecords(); foreach ($records as $record => $id) 执行类型注释。

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

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

答案 1 :(得分:2)

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

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

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

这样做的好处就是“为所有第一次使用响应添加类型注释”的答案,源代码多次不包含相同的行(response: django.http.HttpRequest

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

答案 2 :(得分: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。 AFAIK无法在每个模块级别定义一次