Mais pourquoi mon éditeur de texte me colore le nom de variable vars
comme si c’était une fonction ? Je n’ai pas défini de…
Attend…
Nan…
Putain c’est un built-in !
Il y a encore des fonctions built-in que je ne connais pas non de nom !
>>> class UneClasse(object):
... def __init__(self):
... self.attribut = 'valeur'
... def methode(self):
... pass
...
>>> vars(UneClasse()) # wut ?
{'attribut': u'valeur'}
En fait c’est l’équivalent de faire obj.__dict__
, mais en propre. Tout comme next(iterable)
est la version propre de iterable.__next__()
.
D’ailleurs on travaille sur une copie :
>>> id(object.__dict__)
33943288
>>> id(vars(object))
33942840
A chaque fois que je commence à me sentir enfin un programmeur de la mort, y a un détail pour me rappeler qu’il me reste toujours des bases à apprendre.
]]>