Я хочу, чтобы функция объединения принимала два аргумента одного типа. Это общий тип T.
И T — это один элемент определенного типа объединения couldTypeForCombine = int | str. Я хочу ограничиться возможным типомForCombine, а не включенным в него типом, поскольку определение возможного типаForCombine может измениться. Поступая таким образом, mypy обнаружит проблему, если я не адаптирую сопоставление с образцом в функции объединения
Я пытаюсь улучшить функцию, которая объединяет два значения одного типа, в настоящее время поддерживаются int и str. Вот моя текущая реализация:
Код: Выделить всё
def combine[T: (int, str)](a: T, b: T) -> T:
match a:
case int():
return a + b
case str():
return a + " " + b
Код: Выделить всё
possibleTypeForCombine = int | str
# or
from typing import Union
possibleTypeForCombine = Union[int, str]
Я попыталась использовать псевдоним этого типа в новой версии функции:
Код: Выделить всё
def combine2[T: possibleTypeForCombine](a: T, b: T) -> T:
match a:
case int():
c = a + b
return c
case str():
c = a +" " + b
return c
ошибка: отсутствует оператор возврата. Ошибка [return]: не поддерживается. Типы операндов для + («str» и «T») Ошибка [оператора]: несовместимый тип возвращаемого
значения (получено «str», ожидается «T») [возвращаемое значение]
Конечно, я этого ожидал. Синтаксис ограничения универсального типа: T: (возможный тип 1, возможный тип 2).
Я хотел бы знать, возможно ли тем не менее сделать что-то подобное< /п>
Подробнее здесь: https://stackoverflow.com/questions/791 ... e-in-pytho