函数间的类型推断/重用类型提示
我在一个外部库里有一个函数,它的类型提示很复杂(我们叫它“内函数”)。在我的代码中,还有另一个函数(我们叫它“外函数”)在调用这个内函数。这个内函数的一个参数需要从外函数传递过去。我希望使用mypy来检查这个参数的类型,但又不想去复制那个复杂的类型提示。
这里有一个简单的例子:
def inner(x: int) -> None:
...
def outer(x, y: str) -> None:
"""function that needs a typehint for x"""
inner(x)
# This should throw an error
outer(x="a", y="a")
所以我想找到一种方法,定义一个类型别名,这个别名基于内函数的一个参数的类型(我不能修改这个内函数),而不需要复制类型提示(这样如果内函数的类型提示改变,我也不用去更新它)。
1 个回答
0
你可以用 TypeAlias
来给一个变量指定类型,然后在两个函数中重复使用这个类型:
from typing import TypeAlias
X: TypeAlias = int
def inner(x: X) -> None:
...
def outer(x: X, y: str) -> None:
"""function that needs a typehint for x"""
inner(x)
# This should throw an error
outer(x="a", y="a")
补充说明:抱歉,我刚刚注意到有评论提到这是一个外部库——你可以通过一种叫做“猴子补丁”的方法,把这个别名作为一个单独的变量暴露出来。