MyPy meldet Parameter, dessen Typ ein typarer Typ ist, der an denselben Typ wie der Standardwert gebunden ist

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: MyPy meldet Parameter, dessen Typ ein typarer Typ ist, der an denselben Typ wie der Standardwert gebunden ist

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]") .

Code: Select all

reveal_type
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?

Top