python-3.x “with”语句支持类型暗示吗?

ovfsdjhp  于 2023-05-02  发布在  Python
关注(0)|答案(2)|浏览(77)

你能为用with语法定义的变量定义类型提示吗?

with example() as x:
    print(x)

我想在上面输入hint来说明x是一个str(作为示例)。
我发现的唯一的解决方法是使用一个中间变量,但这感觉很奇怪。

with example() as x:
    y: str = x
    print(y)

我在typing documentation中找不到例子。

afdcj2ne

afdcj2ne1#

PEP 526,已经在Python 3中实现。6、允许你注解变量。with语句中使用的变量可以这样注解:

x: str
with example() as x:
    [...]
rbl8hiat

rbl8hiat2#

类型注解通常放置在API边界处。在这种情况下,应该从example.__enter__推断类型。如果该函数没有声明任何类型,解决方案是创建一个对应的stub file,以帮助类型检查器推断该类型。
具体地说,这意味着创建一个.pyi文件,其 Backbone.js 与导入Example的模块相同。然后可以添加以下代码:

class Example:
    def __enter__(self) -> str: ...
    def __exit__(self, exc_type, exc_value, exc_traceback) -> None: ...

相关问题