python / python/cpython

Improve ``NameError`` message when non-mangled name exists in the global scope

Offen
#119,901 9 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

interpreter-core type-feature
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug report

Bug description:

Here is the code:

def __a():
    print("A")


class A:
    def b(self):
        __a()


a = A()
a.b()

It was expected to show a short message "A". However, I got a NameError:

❯ python3.12 bug\ represent.py
Traceback (most recent call last):
  File "/home/PC-Killer/python_work/Demos/bug represent.py", line 11, in <module>
    a.b()
  File "/home/PC-Killer/python_work/Demos/bug represent.py", line 7, in b
    __a()
    ^^^
NameError: name '_A__a' is not defined
❯ python3.13 bug\ represent.py
Traceback (most recent call last):
  File "/home/PC-Killer/python_work/Demos/bug represent.py", line 11, in <module>
    a.b()
    ~~~^^
  File "/home/PC-Killer/python_work/Demos/bug represent.py", line 7, in b
    __a()
    ^^^
NameError: name '_A__a' is not defined

It seems that the name had been translated in an unexpected way.

CPython versions tested on:

3.12, 3.13

Operating systems tested on:

Linux

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

Führen Sie den bereitgestellten Reproducer bug represent.py mit den gemeldeten Python-Versionen aus. Da keine CPython-Quelldatei und kein Test genannt ist, suchen Sie die vorhandenen Tests für Namensmangling und NameError-Vorschläge und verfolgen Sie deren Einstiegspunkte. Als abgeschlossen gilt die Aufgabe, wenn das Beispiel die beabsichtigte knappe Meldung erzeugt, ohne das zugehörige NameError-Verhalten zu beeinträchtigen.

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
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
38/100

Neue Issues direkt in Ihr Postfach

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