Mypy сообщает об ошибке в функции с общим типомPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Mypy сообщает об ошибке в функции с общим типом

Сообщение Anonymous »

Почему Mypy сообщает о ошибке в коде ниже: < /p>

Код: Выделить всё

from typing import Self, reveal_type, Protocol

class A:
def dup(self) -> list[Self]:
return [self, self]

class B:
def dup(self) -> list[Self]:
return [self, self]

class C:
def dup(self) -> list[Self]:
return [self, self]

class HasDup(Protocol):
def dup(self) -> list[Self]: ...

def process[T: A | B | C](elem: T) -> list[T]:
reveal_type(elem.dup)
duplicated: list[T] = elem.dup()
return duplicated

process(A())
process(B())
process(C())
< /code>
Ошибка: < /p>
main.py:25: error: Incompatible types in assignment (expression has type "list[A] | list[B] | list[C]", variable has type "list[T]")  [assignment]

Если я заменю T: A | Б | C с T: HasDup или T: (A, B, C), то об ошибке больше не сообщается.
Это ошибка ограничение mypy? Мне кажется, что A | Б | C является подтипом HasDup.

Подробнее здесь: https://stackoverflow.com/questions/793 ... neric-type
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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