如何定义重载类型签名?



我有一个带有重载签名的Python函数,例如float→float, str→int。我希望它有正确的键入,使用注释等,这样我可以正确地检查它,并像自动完成工具将工作。这可能吗?我理解不同的工具会有不同的支持,所以mymy可以作为这个问题的标准。我可以使用Python 3的任何发布版本。

可以,您可以使用@typing.overload装饰器。

从https://docs.python.org/3/library/typing.html # typing.overload:

@overload
def process(response: None) -> None:
...
@overload
def process(response: int) -> tuple[int, str]:
...
@overload
def process(response: bytes) -> str:
...
def process(response):
<actual implementation>

那些省略号(...)是文字。实际上,您将为每个重载函数签名键入三个点。实际代码将出现在最终定义中。

最新更新