no error when extending class that has polymorphic self with a non-polymorphic self
Offen
Dieses Issue hat noch niemand übernommen.
bug
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
from typing import TypeVar
Self = TypeVar("Self")
class A:
def foo(self: Self) -> Self:
return self
class B(A):
def foo(self) -> B: # no error
return B()
class C(B):
a = 1
T = TypeVar("T", bound=A)
def foo(a: T) -> T:
return a.foo()
print(foo(C()).a) # runtime error
https://mypy-play.net/?mypy=master&python=3.10&flags=strict&gist=26bab72984c4d8d721febf3b5c09e497
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduziere das Beispiel aus dem mypy-play-Link mit strikten Einstellungen und verfolge dann, wie mypy Überschreibungen prüft, an denen Self und TypeVar beteiligt sind. Füge einen Regressionstest für das A/B/C-Beispiel hinzu; die Aufgabe ist erledigt, wenn der Checker die ungültige Überschreibung meldet und verhindert, dass der demonstrierte unsichere Aufruf die Typprüfung besteht.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100