我开始使用Python编写各种项目的代码(包括Django web开发和Panda3D游戏开发)。
为了帮助我理解发生了什么,我想基本上“看看”Python对象内部,看看它们是如何运行的——比如它们的方法和属性。
假设我有一个Python对象,我需要什么来打印它的内容?这可能吗?
我开始使用Python编写各种项目的代码(包括Django web开发和Panda3D游戏开发)。
为了帮助我理解发生了什么,我想基本上“看看”Python对象内部,看看它们是如何运行的——比如它们的方法和属性。
假设我有一个Python对象,我需要什么来打印它的内容?这可能吗?
当前回答
如果您想查看参数和方法,就像其他人指出的那样,可以使用pprint或dir()
如果您想查看内容的实际值,可以这样做
object.__dict__
其他回答
其他人已经提到了dir()内置,这听起来像是您正在寻找的,但这里有另一个很好的提示。许多库——包括大多数标准库——都是以源代码形式发布的。这意味着您可以很容易地直接阅读源代码。诀窍在于找到它;例如:
>>> import string
>>> string.__file__
'/usr/lib/python2.5/string.pyc'
*。Pyc文件已编译,因此删除后面的'c',并在您最喜欢的编辑器或文件查看器中打开未编译的*.py文件:
/usr/lib/python2.5/string.py
我发现这对于发现从给定API引发哪些异常等事情非常有用。这种细节在Python世界中很少有良好的文档。
Pprint和dir一起工作效果很好
在Python 3.8中,你可以使用__dict__. __dict__来打印对象的内容。例如,
class Person():
pass
person = Person()
## set attributes
person.first = 'Oyinda'
person.last = 'David'
## to see the content of the object
print(person.__dict__)
{"first": "Oyinda", "last": "David"}
有一个python代码库构建就是为了这个目的:inspect在python 2.7中介绍过
已经有很多好的提示了,但还没有提到最短和最简单的(不一定是最好的):
object?