Si je lance ce en PythonPourquoi Python remappe-t-il mon nom d'attribut?
class Boo(object):
def __init__(self, x):
self._x = x
self.__bingo = 3
self._info = {'x': x, 'y':42}
def __dir__(self):
return ['x']
@property
def x(self):
return self._x
@property
def z(self):
return self._x+1
def __getattr__(self, key):
return self._info[key]
b = Boo(44)
b.__dict__.keys()
il imprime
['_info', '_Boo__bingo', '_x']
Pourquoi __bingo
sont renommés? Les attributs de double trait de soulignement sont-ils réservés?
Parce que ce * exactement ce que vous avez dit Python à faire *. Où avez-vous eu l'idée d'utiliser double-underscores? Avez-vous juste tomber sur ce comportement? Ou avez-vous suivi un tutoriel qui vous dit que les doubles caractères de soulignement sont "privés"? –
Je n'ai aucun problème à ce que cela soit marqué comme un doublon, mais la [question liée] (https://stackoverflow.com/questions/7456807/python-name-mangling) n'est liée que de manière tangentielle à cette question. Il y a [une réponse à cette question] (https://stackoverflow.com/a/34903236/44330) qui répond à ma question. –
@ juanpa.arrivillaga Je suis tombé sur ce comportement, et je voulais savoir pourquoi, ce qui correspond exactement à ma question. (Votre commentaire apparaît comme un peu arrogant, au fait.) –