我只想在Mac终端快速查看Python对象的属性和值。我该如何做呢?(非常基础的问题,我从未使用过Python)
具体来说,我想查看这个Google App Engine MailHandler示例中的message.attachments
是什么(图像、视频、文档等)。
我只想在Mac终端快速查看Python对象的属性和值。我该如何做呢?(非常基础的问题,我从未使用过Python)
具体来说,我想查看这个Google App Engine MailHandler示例中的message.attachments
是什么(图像、视频、文档等)。
pprint
模块获取其漂亮打印的版本。请注意保留HTML标签。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
模块。
使用inspect
模块的getmembers
属性。
它会返回一个(key, value)
元组列表。如果可用,则从obj.__dict__
获取值,并且如果在obj.__dict__
中没有相应的条目,则使用getattr
。这可以避免为此编写几行代码。
尝试
repr(obj) # returns a printable representation of the given object
或者
dir(obj) # the list of object methods
或者
obj.__dict__ # object variables
__str__
方法,它提供了一个对象的字符串表示。不幸的是,在pdb中似乎不能自动打印出来。__repr__
,但__repr__
还有其他要求:首先,你(至少在理论上)应该能够eval()
__repr__
的输出,尽管这个要求似乎只有很少被强制执行。__repr__
作为Ruby中.inspect
的等价物我给出一个+1。 我认为Python的__str__
更类似于Ruby的.to_s
。 - Ron Klein或者将Abrer和Mazur的答案统一起来,得到:
from pprint import pprint
pprint(my_object.__dict__ )
key = object[value]
(key = value)。有更好的方法吗? - Lancegetattr
,另一个内置函数。 - Manoj Govindan