python / python/peps

PEP 526: Name mangling doesn't take place inside the body of a module

Abierto
#3,062 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
reStructuredText
Estrellas
5k
Forks
1.8k
Merge medio
2 d 4 h
PR fusionados (30 d)
25

Descripción

Hi,
In PEP 526, there is a section called "Runtime Effects of Type Annotations" which has the following code:

from typing import Dict
class Player:
    ...
players: Dict[str, Player]
__points: int

print(__annotations__)
# prints: {'players': typing.Dict[str, __main__.Player],
#          '_Player__points': <class 'int'>}

The code and the output don't match.
Name mangling only happens inside the body of the class not module. So the correct output would be:

{'players': typing.Dict[str, __main__.Player], '__points': <class 'int'>}

If we want to see the effect of name mangling we could have something like:

from typing import Dict

class Player:
    __points: int

players: Dict[str, Player]
print(__annotations__)
print(Player.__annotations__)

Or have the print(__annotations__) inside the class:

from typing import Dict

class Player:
    __points: int
    print(__annotations__)

players: Dict[str, Player]
print(__annotations__)

That would be a quick fix if you confirm.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Abre PEP 526 y revisa la sección “Runtime Effects of Type Annotations”, especialmente su ejemplo de anotación a nivel de módulo y la salida mostrada. Confirma el comportamiento de name-mangling con respecto al ejemplo y, después, actualiza el código o la salida para que coincidan y conserven una demostración clara del mangling a nivel de clase. La tarea estará terminada cuando el PEP renderizado ya no presente resultados contradictorios.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
documentation
Tipo de issue
Documentación
Dificultad
1/5
Tiempo estimado
Menos de una hora
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
55/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.