Class scope name resolution issue
Offen
Dieses Issue hat noch niemand übernommen.
bug
good-second-issue
priority-2-low
topic-runtime-semantics
topic-variable-scope
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Example courtesy of @gvanrossum , based on https://twitter.com/gvanrossum/status/1354305179244392453
While Python's behaviour is surprising, mypy should match it.
from typing import *
x: Optional[int] = None
y: Optional[int] = None
def f() -> None:
x = 1
y = 1
class C:
reveal_type(x) # Incorrectly reveals int, should be Optional[int]
reveal_type(y) # Correctly reveals int
x = 2
I also found https://bugs.python.org/issue24129 interesting. Thanks, ilevkivskyi!
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
Führe zunächst das Python-Beispiel des Issues mit mypy aus und vergleiche die beiden reveal_type-Ergebnisse. Verfolge die Logik der Namensauflösung im Klassenbereich, die x und y behandelt; abgeschlossen ist die Aufgabe, wenn x als Optional[int] aufgelöst wird, während y int bleibt, entsprechend dem Verhalten von Python.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100