Создавайте перегруженные функции, игнорируя ненужные параметры в сигнатуре.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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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