我开始使用Python编写各种项目的代码(包括Django web开发和Panda3D游戏开发)。
为了帮助我理解发生了什么,我想基本上“看看”Python对象内部,看看它们是如何运行的——比如它们的方法和属性。
假设我有一个Python对象,我需要什么来打印它的内容?这可能吗?
我开始使用Python编写各种项目的代码(包括Django web开发和Panda3D游戏开发)。
为了帮助我理解发生了什么,我想基本上“看看”Python对象内部,看看它们是如何运行的——比如它们的方法和属性。
假设我有一个Python对象,我需要什么来打印它的内容?这可能吗?
当前回答
在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"}
其他回答
如果您正在寻找一个稍微更微妙的解决方案,您可以尝试objprint。它的一个积极的方面是它可以处理嵌套对象。例如:
from objprint import objprint
class Position:
def __init__(self, x, y):
self.x = x
self.y = y
class Player:
def __init__(self):
self.name = "Alice"
self.age = 18
self.items = ["axe", "armor"]
self.coins = {"gold": 1, "silver": 33, "bronze": 57}
self.position = Position(3, 5)
objprint(Player())
会打印出来
<Player
.name = 'Alice',
.age = 18,
.items = ['axe', 'armor'],
.coins = {'gold': 1, 'silver': 33, 'bronze': 57},
.position = <Position
.x = 3,
.y = 5
>
>
尝试使用:
print(object.stringify())
其中object是要检查的对象的变量名。
这将打印出格式化良好的选项卡输出,显示对象中所有键和值的层次结构。
注意:这在python3中有效。不确定它是否适用于早期版本
更新:这并不适用于所有类型的对象。如果你遇到了这些类型之一(比如Request对象),请使用以下类型之一:
dir(对象)
or
进口pprint 然后: pprint.pprint (object.__dict__)
此外,如果您想查看列表和字典内部,可以使用pprint()
已经有很多好的提示了,但还没有提到最短和最简单的(不一定是最好的):
object?
import pprint
pprint.pprint(obj.__dict__)
or
pprint.pprint(vars(obj))