python / python/mypy

Passing self to a generic function that accepts Self

Offen
#17,723 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug topic-self-types
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
Ø Merge
1 T. 18 Std.
Gemergte PRs (30 T.)
54

Beschreibung

from typing import Generic, Self, TypeVar

T = TypeVar('T')


class X(Generic[T]):
    def f(self, t: T) -> None:
        pass


class Y:
    def g(self) -> None:
        X[Self]().f(self)  # error: Argument 1 to "f" of "X" has incompatible type "Y"; expected "Self"  [arg-type]

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Verwende die Python-Reproduktion im Issue als Einstiegspunkt und führe mypy dagegen aus, um die arg-type-Diagnose zu bestätigen. Verfolge, wie Self für X[Self] aufgelöst wird und wie der Aufruf von f geprüft wird; abgeschlossen ist die Aufgabe, wenn dieser gültig wirkende Aufruf ohne den incompatible-type-Fehler akzeptiert wird und ein Regressionstest den Fall abdeckt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
devtools
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.