Mypy жалуется на несовместимые типы возвращаемых значений в переопределениях метода подкласса ⇐ Python
Mypy жалуется на несовместимые типы возвращаемых значений в переопределениях метода подкласса
У меня есть кодовая база Python, в которой я определил иерархию классов A, B и C. Класс A имеет метод класса f с типом возвращаемого значения TYPE_A, где TYPE_A — это TypeVar, привязанный к классу. А. Класс B наследует от A и переопределяет f с тем же типом возвращаемого значения. Однако когда класс C наследует от B и пытается переопределить f с возвращаемым типом Self, который ожидается, что он будет ссылаться на тип текущего класса, mypy генерирует следующие ошибки:
при вводе import Self, TypeVar TYPE_A = TypeVar("TYPE_A",bound="A") класс А: @classmethod защита f(cls) -> TYPE_A: проходить класс Б(А): @classmethod защита f(cls) -> TYPE_A: проходить класс С(В): @classmethod def f(cls) -> Я: проходить Когда я запускаю mypy, он генерирует следующие ошибки:
main.py:20: ошибка: тип возвращаемого значения «C» из «f» несовместим с типом возвращаемого значения «TYPE_A» в супертипе «B» [переопределить] main.py:20: ошибка: тип возврата «C» из «f» несовместим с типом возврата «TYPE_A» в супертипе «A» [переопределить]
У меня есть кодовая база Python, в которой я определил иерархию классов A, B и C. Класс A имеет метод класса f с типом возвращаемого значения TYPE_A, где TYPE_A — это TypeVar, привязанный к классу. А. Класс B наследует от A и переопределяет f с тем же типом возвращаемого значения. Однако когда класс C наследует от B и пытается переопределить f с возвращаемым типом Self, который ожидается, что он будет ссылаться на тип текущего класса, mypy генерирует следующие ошибки:
при вводе import Self, TypeVar TYPE_A = TypeVar("TYPE_A",bound="A") класс А: @classmethod защита f(cls) -> TYPE_A: проходить класс Б(А): @classmethod защита f(cls) -> TYPE_A: проходить класс С(В): @classmethod def f(cls) -> Я: проходить Когда я запускаю mypy, он генерирует следующие ошибки:
main.py:20: ошибка: тип возвращаемого значения «C» из «f» несовместим с типом возвращаемого значения «TYPE_A» в супертипе «B» [переопределить] main.py:20: ошибка: тип возврата «C» из «f» несовместим с типом возврата «TYPE_A» в супертипе «A» [переопределить]
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Типы, несовместимые с Python (mypy), при работе с typeVars и вызываемым аргументом
Anonymous » » в форуме Python - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-