Bei Annotation eines Funktionsparameters mit einem gebundenen Typevar führt ein Standardwert in den Parameter mit einem Gewerkschaftstyp zwischen dem Typevar und dem Standardwerttyp , obwohl der Standardwert des Typs des Typs ad.
Code: Select all
class A:
pass
class B(A):
pass
Instance = TypeVar("Instance", bound=A)
def get_instance(cls: type[Instance] = A) -> Instance:
return cls()
MyPy liefert den folgenden Fehler: Fehler: Inkompatibler Standard für Argument "cls" (Standard hat Typ "Typ" [a] ", Argument" Typ "Typ [Instanz]") .
ist in beiden Fällen korrekt:
Code: Select all
instance_a = get_instance(cls=A)
reveal_type(instance_a) # note: Revealed type is "A"
instance_b = get_instance(cls=B)
reveal_type(instance_b) # note: Revealed type is "B"
Wie kann ich get_instance richtig kommentieren, damit ich das Standardargument beibehalten kann?