有没有办法通过变量名来定义类型提示?
示例:
每次我在代码中命名变量response
时,我希望它有一个类型提示django.http.HttpResponse
。
我的用例是像PyCharm这样的IDE的类型提示。到目前为止,我没有用例在运行时对此进行评估。
我想要一般(而不是pycharm特定的)解决方案。
我想避免一遍又一遍地进行手动和显式类型提示。
请告诉我你为什么要对这个问题进行投票。我很好奇并愿意学习。
答案 0 :(得分:2)
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无法在每个模块级别定义一次