Создавайте перегруженные функции, игнорируя ненужные параметры в сигнатуре.Python

Программы на Python
Anonymous
Создавайте перегруженные функции, игнорируя ненужные параметры в сигнатуре.

Сообщение Anonymous »

Как изменить сигнатуру перегрузок, чтобы они сигнализировали средствам проверки типов, что за тип возвращаемого значения отвечает только один параметр, игнорируя все остальные параметры?
Начиная с этого кода (ни 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, var1: str, var2: float, var3: int) -> int | None:
return 123 if switch is True else None
Как изменить перегрузки, чтобы мне не приходилось обновлять их каждый раз, когда я добавляю еще один параметр? Я пробовал использовать *args и **kwargs в сочетании с Any в перегрузках, но безуспешно.

Подробнее здесь: https://stackoverflow.com/questions/787 ... -signature

Вернуться в «Python»