我只想快速看到在Python中的對象的屬性和值,我怎麼做到這一點在mac上的終端(非常基本的東西,從來沒有使用python)?什麼是Ruby的「檢查」的Python等價物?
具體來說,我想看看message.attachments
在this Google App Engine MailHandler example(圖片,視頻,文檔等)。
我只想快速看到在Python中的對象的屬性和值,我怎麼做到這一點在mac上的終端(非常基本的東西,從來沒有使用python)?什麼是Ruby的「檢查」的Python等價物?
具體來說,我想看看message.attachments
在this Google App Engine MailHandler example(圖片,視頻,文檔等)。
使用inspect
模塊
的getmembers
屬性將返回(key, value)
元組的列表。它從obj.__dict__
得到的值(如果可用)並且使用getattr
如果obj.__dict__
中沒有對應的條目。它可以幫你避免爲此寫幾行代碼。
如果你想轉儲整個對象,你可以使用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)
編輯:我可能誤解你的「對象」是什麼意思 - 如果你想看看類的實例,而不是像類型的字典基本的數據結構,你可能想看看inspect
模塊代替。
我很驚訝沒有人提到過Python的__str__
方法,它提供了一個對象的字符串表示。不幸的是,它似乎沒有在pdb中自動打印。
對此,也可以使用__repr__
,但__repr__
有其他要求:一方面,您需要能夠eval()
的輸出__repr__
。
非常感謝你,現在我可以通過這些循環並打印'key = object [value]'(key = value)。有沒有更好的辦法? – 2010-08-24 05:17:42
我想不出另一種方式,期望可能'getattr',另一種內置函數。 – 2010-08-24 05:19:30
參見'inspect'模塊。 – aaronasterling 2010-08-24 05:29:31