簡體   English   中英

"Ruby 的“檢查”的 Python 等價物是什么?"

[英]What is the Python equivalent of Ruby's "inspect"?

我只想在 Python 中快速查看對象的屬性和值,如何在 mac 上的終端中執行此操作(非常基本的東西,從未使用過 python)?

具體來說,我想看看這個 Google App Engine MailHandler 示例<\/a>(圖像、視頻、文檔等)中的message.attachments<\/code>是什么。

如果要轉儲整個對象,可以使用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模塊。

使用inspect模塊的getmembers屬性

它將返回(key, value)元組的列表。 它得到的值從obj.__dict__ (如果可用),並使用getattr如果在代碼中沒有相應條目obj.__dict__ 它可以幫助您免於為此目的編寫幾行代碼。

更新

有比dir更好的方法。 看到其他答案。

原始答案

使用內置函數dir(fp)查看fp的屬性。

我很驚訝沒有人提到Python的__str__方法,它提供了一個對象的字符串表示。 不幸的是,它似乎沒有在pdb中自動打印。

也可以使用__repr__ ,但__repr__還有其他要求:首先,你(至少在理論上)應該能夠eval() __repr__的輸出,盡管這個要求似乎很少被強制執行。

嘗試

repr(obj) # returns a printable representation of the given object

或者

dir(obj) # the list of object methods

或者

obj.__dict__ # object variables

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM