Понимание связанных 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
Ответить

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

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

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

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

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