MyPy проверяет конфликт ввода с типизацией.Self ⇐ Python

Программы на Python
Anonymous
MyPy проверяет конфликт ввода с типизацией.Self

Сообщение Anonymous »

Во время проверки и переписывания неизменяемого класса операции не проходят проверку mypy.
Класс реализует такие операции, как__add__, однако каждая функция, возвращающая новый экземпляр того же класса, вызывает ошибку ввода. Несовместимый тип возвращаемого значения (получено «Point», ожидается «Self») [return-value]mypy(error)
Методы, которые я пробовал:
  • T = TypeVar("T", bound="A") Поскольку параметр T был привязан к A, mypy распознал бы создание экземпляра A() как подкласс T
  • class A(Generic[T]) то же самое
  • return cast(T, A()) Это работает, но требует, чтобы приведения были разбросаны по всему коду.
  • Выше с ClassVar вместо Generic
Есть ли решение, которое не сильно полагается на cast()?
Минимально воспроизводимый пример
from typing import Self
class A():
def meth(self, other:Self) -> Self:
return A()


Подробнее здесь: https://stackoverflow.com/questions/770 ... yping-self

Вернуться в «Python»