Понимание связанных TypeVar с универсальными параметрамиPython

Программы на Python
Anonymous
Понимание связанных TypeVar с универсальными параметрами

Сообщение Anonymous »

Я пытаюсь понять, как связанные переменные работают в TypeVars. Я понимаю, что разрешен любой подкласс связанного класса, но как только я сделаю связанный класс универсальным, то, чего я ожидал, работать не будет:

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

from typing import Generic, TypeVar

class X:
pass
class Y(X):
pass

T = TypeVar("T", bound=X)

class A(Generic[T]):
def __init__(self, param: T):
self.param = param
class B(A[T]):
pass

S = TypeVar("S", bound=A[X])

def foo(bar: S) -> S:
return bar

foo(B(Y())) # Type "B[Y]" cannot be assigned to type "A[X]"
Может ли кто-нибудь объяснить, почему это не работает, и известны ли какие-либо обходные пути?


Подробнее здесь: https://stackoverflow.com/questions/713 ... parameters

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