如何找到Python / Django模型对象的内存地址?

时间:2009-07-02 15:35:54

标签: python django django-models

一个普通的物体,我可以用

o.__repr__() 

看到类似

的内容
'<__main__.A object at 0x9d78fec>'

但是,比方说,Django用户只返回

<User:bob>

如何查看其中一个的实际地址,或比较两个这样的模型对象是否实际上是同一个对象?

3 个答案:

答案 0 :(得分:7)

id()将返回对象的标识(通常作为地址实现),这对于存在于同一时间点的两个对象是唯一的。然而,检查两个对象是否相同的显而易见的方法是使用为此明确设计的运算符:is

 if obj1 is obj2: 
     # Objects are identical.

答案 1 :(得分:2)

您可以获取任何对象的ID:

a = object()
print hex(id(a))

虽然对于CPython来说,这是对象的地址,但我相信这并不能保证(并且在其他实现上可能会有所不同,例如iron python)。但是,相同的ID意味着相同的对象。

答案 2 :(得分:1)

使用id()函数。或者等效地比较“obj1是obj2”。