Почему «mypy» рассматривает «int» как подтип «float»? Подтип должен поддерживать все методы своего супертипа, но у «float» есть методы, которые «int» не поддерживает:
test.py:
def f(x : float) -> bool:
return x.is_integer()
print(f(123.0))
print(f(123))
Тип stati c средство проверки принимает передачу аргумента "int" для параметра "float":
(3.8.1) myhost% mypy test.py
Success: no issues found in 1 source file
Но это не гарантирует отсутствия ошибок во время выполнения:
(3.8.1) myhost% python test.py
True
Traceback (most recent call last):
File "test.py", line 5, in <module>
print(f(123))
File "test.py", line 2, in f
return x.is_integer()
AttributeError: 'int' object has no attribute 'is_integer'
потому что "float "имеет дополнительные методы, которых у" int "нет.