Только 3 bool code> параметры изменяют тип возвращаемого значения (по одному для каждого элемента кортежа), что означает, что мне нужно всего 8 перегрузок, и я не хочу загромождать перегрузки параметрами, которые не имеют отношения к типу возвращаемого значения.
Код (ни mypy, ниpyright не жалуется):
Код: Выделить всё
from typing import Literal, overload
@overload
def test(switch: Literal[True]) -> int: ...
@overload
def test(switch: Literal[False]) -> None: ...
def test(switch: bool) -> int | None:
return 123 if switch is True else None
test_int: int = test(True)
test_none: None = test(False)
Код: Выделить всё
def test(switch: bool, var: str = '') -> int | None:
Код: Выделить всё
def test(switch: bool, var: str) -> int | None:
Код: Выделить всё
def test(var: str = '', switch: bool = True) -> int | None:
Подробнее здесь: https://stackoverflow.com/questions/787 ... -signature