Можно ли в какой-то момент обновить подсказку типа переменной?< /p>
В следующем примере я ожидал, что тип классов будет list[tuple[int, str]] | Нет, потому что я меняю значение в цикле if.
Я знаю, что могу создать новую переменную для списка, но предпочитаю, чтобы новое значение затеняло словарь, поскольку в этом больше нет необходимости .
Итак, можно ли сделать это без введения новой переменной?
Код: Выделить всё
def foo(classes: Optional[dict[int, str]] = None):
if classes is not None:
classes = list(classes.items()) # `classes` type is not updated
classes.sort(key=lambda x: x[0])
a = classes # expecting list[tuple[int, str]] | None, got dict[int, str] | None
Код: Выделить всё
> mypy .\foo.py
foo.py:6: error: Incompatible types in assignment (expression has type "List[Tuple[int, str]]", variable has type "Optional[Dict[int, str]]")
foo.py:7: error: "Dict[int, str]" has no attribute "sort"
Found 2 errors in 1 file (checked 1 source file)


Подробнее здесь: https://stackoverflow.com/questions/740 ... -type-hint