Код: Выделить всё
def my_foo(x: dict[str, int | float], some_condition: bool) -> None:
if some_condition:
x['the_int'] = 1
else:
x['the_float'] = 1.0
my_dict = {'some_int': 2}
my_foo(my_dict, True)
ошибка: аргумент 1 в "my_foo" имеет несовместимый
тип " dict[str, int]"; ожидается "dict[str, int | float]" [arg-type]
примечание: "Dict" является инвариантным - см.
https://mypy.readthedocs.io/en/stable/common_issues. html#variance
src\type_test.py:23: примечание: вместо этого рассмотрите возможность использования «Сопоставления», которое
ковариантно для типа значения
Я пытался сделать подсказку типа с помощью MutableMapping, но безрезультатно:
ошибка: аргумент 1 для «my_foo» имеет несовместимый тип "dict[str, int]";
ожидается "MutableMapping[str, int | float]"
Подробнее здесь: https://stackoverflow.com/questions/790 ... s-for-mypy