如何以类似于Chrome开发控制台中JS对象的方式检查Python对象?
在Chrome开发控制台中,可以键入变量的名称,输出是对象的可视化和交互式表示。(在JavaScript中,对象类似于字典,所以这很简单。) 我希望在Python中具有相同的功能。我很震惊,我找不到类似的东西。例如,在IPython GUI控制台中,当我想检查变量如何以类似于Chrome开发控制台中JS对象的方式检查Python对象?,python,Python,在Chrome开发控制台中,可以键入变量的名称,输出是对象的可视化和交互式表示。(在JavaScript中,对象类似于字典,所以这很简单。) 我希望在Python中具有相同的功能。我很震惊,我找不到类似的东西。例如,在IPython GUI控制台中,当我想检查变量diff时,在本例中,我得到的是它的类型: In [5]: diff Out[5]: <_pygit2.Diff at 0x1a69930> [5]中的:差异 出[5]: 此命令检查变量,但复杂对象的输出混乱(此处输出不
diff
时,在本例中,我得到的是它的类型:
In [5]: diff
Out[5]: <_pygit2.Diff at 0x1a69930>
[5]中的:差异
出[5]:
此命令检查变量,但复杂对象的输出混乱(此处输出不完整):
[10]中的:inspect.getmembers(diff)
输出[10]:[(“类”),(“delattr”,),(“文档”,“差异对象”),(“格式”,),(“获取属性”,(…)
我认为当语言没有类型系统时,实时自省是非常有用的。也许这个功能只在特殊的Python IDE中可用
显示如何在Chrome中执行此操作:
在图片上,您可以看到变量
f
的简介。它是一个类型为Form
的对象,您可以单击它并查看其属性(例如\u meetingTimeFrom
)及其值,您可以进一步单击属性以检查它们,您可以查看对象的方法(例如,field\uuu proto\uu
,这可能是一种在JavaScript中查看对象方法的方法)。如果您只想以可读的方式列出属性,pprint.pprint
是您的朋友:
from pprint import pprint
from inspect import getmembers
class X:
def __init__(self, x, y):
self.x = x
self.y = y
x = X([42] * 5, [True] * 15)
pprint(getmembers(x))
pprint(vars(x))
如果您对此GUI感兴趣,请查看
。它使用Python标准中的inspect模块
用于下面的对象内省的库
通过titusjan你可以得到
\uuuu repr\uuuuuu
,这不一定只是类型(这是默认值)。试试例如dir(thing)
。你可以迭代diff
。通过这行:list(diff)
@GeorgePetrov我不想迭代任何东西,我想要一个交互式自省!)@jonrsharpe感谢您的更正,但我的观点是,我没有得到对象本身(其视觉表现)…这是其视觉表现。虽然这个答案对我来说足够了,但谢谢您,我想再次发布一个链接,该链接位于我的问题下方的评论中,其他有趣的答案在哪里:
from pprint import pprint
from inspect import getmembers
class X:
def __init__(self, x, y):
self.x = x
self.y = y
x = X([42] * 5, [True] * 15)
pprint(getmembers(x))
pprint(vars(x))