I С# мы делаем это через отражение. В Javascript это просто:
for(var propertyName in objectName)
var currentPropertyValue = objectName[propertyName];
Как это сделать в Python?
I С# мы делаем это через отражение. В Javascript это просто:
for(var propertyName in objectName)
var currentPropertyValue = objectName[propertyName];
Как это сделать в Python?
for property, value in vars(theObject).iteritems():
print property, ": ", value
Имейте в виду, что в некоторых редких случаях существует свойство __slots__
, такие классы часто не имеют __dict__
.
См. inspect.getmembers(object[, predicate])
.
Возвращает все члены объекта в списке пар (имя, значение), отсортированных по имени. Если предоставляется необязательный аргумент предиката, включаются только те члены, для которых предикат возвращает истинное значение.
>>> [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']
>>>
dir()
- это простой способ. См. Здесь:
Свойство __dict__
объекта является словарем всех его других определенных свойств. Обратите внимание, что классы Python могут переопределять getattr
и сделать вещи, которые выглядят как свойства, но не находятся в __dict__
. Там также встроены функции vars()
и dir()
, которые отличаются тонким образом. И __slots__
может заменить __dict__
в некоторых необычных классах.
Объекты сложны в Python. __dict__
- это подходящее место для программирования в стиле отражения. dir()
- это место для запуска, если вы взламываете интерактивную оболочку.
georg научная более короткая версия
print vars(theObject)
Если вы ищете отражение всех свойств, ответы на них выше.
Если вы просто хотите получить ключи объекта, используйте
my_dict.keys()
my_dict = {'abc': {}, 'def': 12, 'ghi': 'string' }
my_dict.keys()
> ['abc', 'def', 'ghi']