导入模块上的Python类型提示

时间:2018-11-09 08:10:25

标签: python flask pycharm type-hinting python-3.7

我发现Flask的自动完成功能有所欠缺-这是因为在内部,特定于上下文的对象(例如current_apprequestlogger实际上是{{1} } s。因此,PyCharm根本不知道如何处理这种类型。

因此,对我来说,显而易见的解决方案是在导入的模块上应用类型提示。除非你做不到!从Python 3.7开始,似乎没有这种语法可以简化此操作。

因此,下一个显而易见的解决方案是为每个特定于上下文的模块制作本地副本,其类型应明确设置为:

LocalProxy

...在您真正尝试启动服务器之前一直有效,在这种情况下,应用程序由于from logging import Logger from flask import Flask, Request, Blueprint, request, current_app as app app: Flask = app logger: Logger = app.logger request: Request = request 而崩溃

事实证明,我们实际上可以将相关的类型提示封装在类内部或应用程序上下文中的其他范围内。

RuntimeError: Working outside of application context.

...有效,但在每种可以想象的意义上都令人尴尬。

在Flask的应用程序上下文中是否有合理的解决方案来获取正确的类型提示?

1 个答案:

答案 0 :(得分:0)

你试过了吗?我知道它至少在从其他模块导入普通变量时有效。

# in module_a.py
my_str = 23


# in module_b.py
from module_a import my_str

my_str: str

# The IDE should now suggest string methods when trying to access
# properties of `my_str`