mypy --strict
покорно жалуется на следующий код:
from typing import Any, Dict
def main() -> None:
my_str: str = 'hello'
my_int: int = my_str
if __name__ == "__main__":
main()
путем вывода:
error: Incompatible types in assignment (expression has type "str", variable has type "int")
Однако следующий код принимается без ошибок:
from typing import Any, Dict
def main() -> None:
my_str: Any = 'hello'
my_int: int = my_str
if __name__ == "__main__":
main()
Есть ли возможность для mypy
заставить его также отклонить второй пример?
Я ожидаю, что это произойдет, потому что он также отвергает следующее:
from typing import Any, Dict, Union
def main() -> None:
my_str: Union[int, str] = 'hello'
my_int: int = my_str
if __name__ == "__main__":
main()
с:
error: Incompatible types in assignment (expression has type "Union[int, str]", variable has type "int")
И в моем понимании Any
это всего лишь Union
из всех возможных типов.
my_str
_может_ быть. - person Martijn Pieters   schedule 05.08.2018Any
. - person i alarmed alien   schedule 05.08.2018Mypy error - incompatible types in assignment
: я не думаю, что мой вопрос является дубликатом этого . Я хочу, чтобыmypy
выдавало ошибку. Другой вопрос хочет, чтобы допустимая ошибка исчезла. ;) - person Tobias Hermann   schedule 05.08.2018