by Anonymous » 20 Mar 2025, 14:30
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?
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]class A:
pass
class B(A):
pass
Instance = TypeVar("Instance", bound=A)
def get_instance(cls: type[Instance] = A) -> Instance:
return cls()
[/code]
MyPy liefert den folgenden Fehler: Fehler: Inkompatibler Standard für Argument "cls" (Standard hat Typ "Typ" [a] ", Argument" Typ "Typ [Instanz]") .
[code]reveal_type[/code] ist in beiden Fällen korrekt:
[code]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"
[/code]
Wie kann ich get_instance richtig kommentieren, damit ich das Standardargument beibehalten kann?