Что такое эквивалент Python Ruby "проверять"?
Я просто хочу быстро увидеть свойства и значения объекта в Python, как это сделать в терминале на Mac (очень простой материал, никогда не используемый python)?
В частности, я хочу посмотреть, что message.attachments
находится в этом примере Google App Engine MailHandler (изображения, видео, документы и т.д.)..
Ответы
Ответ 1
используйте атрибут getmembers
модуля inspect
Он вернет список кортежей (key, value)
. Он получает значение от obj.__dict__
, если доступно, и использует getattr
, если в obj.__dict__
нет соответствующей записи. Это может спасти вас от написания нескольких строк кода для этой цели.
Ответ 2
Если вы хотите сбросить весь объект, вы можете использовать модуль pprint
, чтобы получить его довольно печатную версию.
from pprint import pprint
pprint(my_object)
# If there are many levels of recursion, and you don't want to see them all
# you can use the depth parameter to limit how many levels it goes down
pprint(my_object, depth=2)
Изменить: Возможно, я неправильно понял, что вы подразумеваете под "объектом" - если вы хотите посмотреть экземпляры класса, в отличие от базовых структур данных, таких как dicts, вы можете посмотреть на inspect
.
Ответ 3
Обновление
Есть лучшие способы сделать это, чем dir
. См. Другие ответы.
Оригинальный ответ
Используйте встроенную функцию dir(fp)
, чтобы увидеть атрибуты fp
.
Ответ 4
Я удивлен, что никто не упомянул метод Python __str__
, который предоставляет строковое представление объекта. К сожалению, он не печатается автоматически в pdb.
Для этого также можно использовать __repr__
, но __repr__
предъявляет другие требования: во- __repr__
, вы (по крайней мере, теоретически) должны иметь возможность оценивать eval()
выходные данные __repr__
, хотя это требование, по-видимому, применяется редко.