Я хотел бы сделать что-то вроде этого:
Код: Выделить всё
def ensure_int(obj: int | str) -> None:
if isinstance(obj, str):
raise ValueError("obj cannot be str")
def f(x: int | str) -> int:
ensure_int(x)
return x
Код: Выделить всё
error: Incompatible return value type (got "Union[int, str]", expected "int") [return-value]
Итак, мои вопросы:
- Существуют ли сценарии, в которых вызов метода обеспечения_int не гарантирует, что тип x равен int?
- Есть ли способ исправить это с помощью дополнительных аннотаций или чего-то подобного? Я читал о TypeGuard и TypeIs, но они работают только с функциями, возвращающими bool.
Подробнее здесь: https://stackoverflow.com/questions/794 ... n-function
Мобильная версия