Code: Select all
from typing import TypeVar, reveal_type
# Missing type parameters for generic type "list" [type-arg]
F = TypeVar("F", bound="Foo[list]")
U = TypeVar("U")
class Foo[T]:
def __init__(self, value: T) -> None:
self.value = value
def get_value(self) -> T:
return self.value
@classmethod
def join(cls: type[F], foos: list[Foo[U]]) -> F:
return cls([f.value for f in foos])
class Bar[T](Foo[T]):
...
# Correctly revealed as `Bar[list[int]]`
reveal_type(Bar[list[int]].join([Bar(1), Bar(2)]))
Gibt es eine bessere Möglichkeit, die richtigen Typanmerkungen zu erhalten und gleichzeitig Unterklassen zu unterstützen? Kann der Typ von cls mit denselben TypeVars wie das Argument foos gebunden werden (d. h. die U TypeVar nutzen), ohne dass Bar[list[int]] angegeben werden muss? Code> ?