Код Python:
t = (1,2,3)
t = tuple(x+1 for x in t)
mypy жалуется:
2: error: Incompatible types in assignment (expression has type "Tuple[int, ...]", variable has type "Tuple[int, int, int]")
Что я должен сделать, чтобы избежать этой ошибки?Это не помогает:
t = (1,2,3)
t = tuple(x+1 for x in t)[0:3]
Это "работает":
from typing import Tuple
t: Tuple[int, ...] = (1,2,3)
t = tuple(x+1 for x in t)
Но на самом деле я не хочу, чтобы t
был кортежом переменной длины.
Конечно, я могу сказать mypy игнорировать строку:
t = (1,2,3)
t = tuple(x+1 for x in t) # type: ignore
Или повторить себя:
t = (1,2,3)
t = (t[0]+1, t[1]+1, t[2]+1)
Или использовать временную переменную, чтобы хотя бы избежать повторения части +1
(что более сложно в реальной проблеме):
t = (1,2,3)
tmp = tuple(x+1 for x in t)
t = (tmp[0], tmp[1], tmp[2])
Есть ли лучшее решение?