I C# we do it through reflection. In Javascript it is simple as:
for(var propertyName in objectName)
var currentPropertyValue = objectName[propertyName];
How to do it in Python?
I C# we do it through reflection. In Javascript it is simple as:
for(var propertyName in objectName)
var currentPropertyValue = objectName[propertyName];
How to do it in Python?
for property, value in vars(theObject).iteritems():
print property, ": ", value
Be aware that in some rare cases there's a __slots__
property, such classes often have no __dict__
.
The __dict__ property of the object is a dictionary of all its other defined properties. Note that Python classes can override __getattr__ and make things that look like properties but are not in __dict__. There's also the builtin functions vars() and dir() which are different in subtle ways. And __slots__ can replace __dict__ in some unusual classes.
Objects are complicated in Python. __dict__ is the right place to start for reflection-style programming. dir() is the place to start if you're hacking around in an interactive shell.
See inspect.getmembers(object[, predicate])
.
Return all the members of an object in a list of (name, value) pairs sorted by name. If the optional predicate argument is supplied, only members for which the predicate returns a true value are included.
>>> [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']
>>>