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

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

Сообщение Anonymous »

В поле у ​​меня есть функция с более чем 25 параметрами, возвращающая кортеж[int|None, int|None, int|None].
Только 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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