Подсказка типа Python: подкласс несовместим с универсальнымPython

Программы на Python
Anonymous
Подсказка типа Python: подкласс несовместим с универсальным

Сообщение Anonymous »

У меня есть следующие простые классы

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

class A:
pass

class B(A):
pass
Мне нужен другой класс, C, с методом, который будет принимать в качестве аргумента любой подкласс A, который по умолчанию будет иметь значение B. Я подумал, что универсальный будет подходящим кандидатом:

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

T = TypeVar('T', bound=A)

class C(Generic[T]):
def foo(self, assistant: type[T] = B) -> None:
pass
Однако, когда я запускаю mypy, я получаю сообщение об ошибке.

Несовместимое значение по умолчанию для аргумента «помощник» (по умолчанию имеет тип "type", аргумент имеет тип "type[T]"

Меня это немного сбивает с толку, так как я думал, что идея TypeVar( 'T',bound=A) должен был создать тип, совместимый с любым подклассом A (в частности, с B).
Да кто-нибудь знает, что я здесь делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/772 ... th-generic

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