小编M. *_*las的帖子

如何使用多个可选参数来类型重载函数?

我有一个带有多个默认值的 kwargs 的函数。其中之一(在中间的某个地方)是控制返回类型的布尔切换。

\n

我想为此方法创建两个重载,Literal[True/False]但保留默认值。

\n

我的想法如下:

\n
from typing import overload, Literal\n\n@overload\ndef x(a: int = 5, t: Literal[True] = True, b: int = 5) -> int: ...\n\n@overload\ndef x(a: int = 5, t: Literal[False] = False, b: int = 5) -> str: ...\n\ndef x(a: int = 5, t: bool = True, b: int = 5) -> int | str:\n    if t:\n        return 5\n    return "asd"\n
Run Code Online (Sandbox Code Playgroud)\n

但 mypy 提出:

\n
\n

错误:重载函数签名 1 和 2 与不兼容的返回类型重叠

\n
\n …

python mypy python-typing

5
推荐指数
1
解决办法
1848
查看次数

标签 统计

mypy ×1

python ×1

python-typing ×1