Python 从变量名到类型提示

Python 从变量名到类型提示,python,type-hinting,Python,Type Hinting,有没有办法通过变量名定义类型提示 例如: 每次我在代码中命名一个变量响应时,我都希望它对django.http.HttpResponse有一个类型提示 我的用例是对像PyCharm这样的ide的类型暗示。到目前为止,我还没有在运行时对其进行评估的用例 我想有一般而不是具体的解决方案 我希望避免一次又一次地进行手动和显式类型暗示 请告诉我你为什么否决这个问题。我很好奇,也愿意学习。为所有返回HttpResponse的方法添加类型注释 Python中的变量需要声明。它是通过我的定义而产生的,也许有更

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

例如:

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

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

我想有一般而不是具体的解决方案

我希望避免一次又一次地进行手动和显式类型暗示

请告诉我你为什么否决这个问题。我很好奇,也愿意学习。

为所有返回HttpResponse的方法添加类型注释 Python中的变量需要声明。它是通过我的定义而产生的,也许有更好的方式来描述它

response=handle_request(request)
若handle_请求有一个类型注释,那个么就不需要对响应进行类型注释

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

这个答案基于用户Alex的评论。谢谢:-

将类型注释添加到响应的所有第一个用法中 看

这有一个缺点,就是响应:django.http.HttpRequest需要放在作用域中每次首次使用之前。AFAIK没有办法在每个模块级别仅定义一次此选项

通过自动生成的存根文件添加类型提示 您可以使用.pyi扩展名自动生成create,其中包含源代码的类型提示

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

这对于名为Add type annotation to all first usage of response的答案有好处,因为源代码多次不包含相同的行响应:django.http.HttpRequest


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

@moonigrawr我在发布之前阅读了您提供的链接。我看不出这对我有什么帮助。我不想一次又一次地进行显式类型暗示,我不认为将变量名莫名其妙地链接到类型是一种好的做法。只要您定义它,就使用注释来定义它的类型,使其显式化,而不是在可见对象之外的某个地方定义它code@Alex我尽量避免过时的评论。这句话是什么意思?它告诉我这个叫做反应的东西是。。。惊讶,惊讶。。。它告诉我这是一种回应。是的,好消息!我喜欢《clean code and clean coder》作者的指导原则:@guetti thing并不是所有使用你的代码的人都会使用pycharm,如果事实上正确的解决方法是向django源代码中添加键入,那么无论何时调用任何HttpResponse返回函数,pycharm都会知道并帮助你使用它。因此,您可以通过对django的贡献来帮助所有人。使用,您可以每次显式指定变量的类型。不过,这需要3.6 Python版本。这是我的首选答案,但我需要等到明天才能接受。小提示:如果您有一个通用的测试套件或其他自动运行用例的方法,您可以通过或在运行时生成键入来受益。@hoefling很棒。这很有趣,这让我笑了。这个主意很疯狂,但有个好消息。通过执行测试来创建类型注释。谢谢你的提示!
def test_foo():
    response: django.http.HttpRequest
    response=handle_request(request)