Я пытаюсь порадовать mypy аннотациями моего типа. Вот минимальный пример:
class FooInterface:
x: int
class FooWithAttribute(FooInterface):
x: int = 0
class FooWithProperty(FooInterface):
@property
def x(self) -> int:
return 0
Насколько я понимаю, все в порядке: и FooWithAttribute().x
, и FooWithProperty().x
вернут 0
, что равно int
, без ошибок типа. Однако mypy жалуется:
error: Signature of "x" incompatible with supertype "FooInterface"
Есть ли способ сказать mypy, что все в порядке? Прямо сейчас единственный способ, который я нашел, - это аннотировать x: typing.Any
в FooInterface
, что тратит впустую информацию о том, что x является int.