Как перечислять свойства объекта в Python?

IC # мы делаем это через отражение. В Javascript это просто:

for(var propertyName in objectName) var currentPropertyValue = objectName[propertyName]; 

Как это сделать в Python?

6 Solutions collect form web for “Как перечислять свойства объекта в Python?”

 for property, value in vars(theObject).iteritems(): print property, ": ", value 

Имейте в __slots__ , что в некоторых редких случаях существует свойство __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() – простой способ. Глянь сюда:

Руководство по интроспекции Python

Свойство __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'] 
  • Python @property против геттеров и сеттеров
  • Переопределение свойств в python
  • Kivy - привязать текст метки к переменной (только для Python)
  • Почему свойство Decorator определяется только для классов?
  • Свойство Python
  • Ошибка traits.api в python
  • Python - лучший язык программирования в мире.