PEP 526: Name mangling doesn't take place inside the body of a module
Personne n'a encore pris cette issue.
- Langage dominant
- reStructuredText
- Étoiles
- 5k
- Forks
- 1.8k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 25
Description
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.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Ouvrez PEP 526 et examinez la section “Runtime Effects of Type Annotations”, en particulier son exemple d’annotation au niveau du module et la sortie affichée. Confirmez le comportement de name-mangling par rapport à l’exemple, puis mettez à jour le code ou la sortie afin qu’ils concordent et conservent une démonstration claire du mangling au niveau de la classe. La tâche est terminée lorsque le PEP rendu ne présente plus de résultats contradictoires.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- documentation
- Type d'issue
- Documentation
- Difficulté
- 1/5
- Temps estimé
- Moins d'une heure
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 55/100