Improve ``NameError`` message when non-mangled name exists in the global scope
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 35.9k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Ejecuta el reproductor bug represent.py proporcionado con las versiones de Python indicadas. No se nombra ningún archivo fuente de CPython ni ninguna prueba, así que localiza las pruebas existentes de name mangling y de sugerencias de NameError, y sigue sus puntos de entrada. Se considera terminado cuando el ejemplo produce el mensaje conciso previsto sin causar regresiones en el comportamiento relacionado de NameError.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- compilers
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 38/100