IC # nous le faisons par réflexion. En Javascript c'est simple comme:
for(var propertyName in objectName)
var currentPropertyValue = objectName[propertyName];
Comment le faire en Python?
IC # nous le faisons par réflexion. En Javascript c'est simple comme:
for(var propertyName in objectName)
var currentPropertyValue = objectName[propertyName];
Comment le faire en Python?
Voir inspect.getmembers(object[, predicate])
.
Renvoie tous les membres d'un objet dans une liste de paires (nom, valeur) triées par nom. Si l'argument de prédicat facultatif est fourni, seuls les membres pour lesquels le prédicat renvoie une valeur vraie sont inclus.
>>> [name for name,thing in inspect.getmembers([])]
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
'__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__',
'__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__','__reduce_ex__',
'__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__',
'__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index',
'insert', 'pop', 'remove', 'reverse', 'sort']
>>>
L' __dict__
de la propriété de l'objet est un dictionnaire de tous ses autres propriétés définies. Notez que les classes Python pouvez remplacer getattr
et de faire des choses qui ressemblent à des propriétés, mais ne sont pas en__dict__
. Il y a également les fonctions internes vars()
et dir()
qui sont différents de manière subtile. Et __slots__
peut remplacer __dict__
dans certaines des classes.
Les objets sont complexes en Python. __dict__
est le bon endroit pour commencer pour la réflexion de style de programmation. dir()
est l'endroit pour commencer si vous êtes le piratage autour de dans un shell interactif.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.