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

0 投票
3 回答
839 浏览
提问于 2025-04-15 12:38

一个普通的对象,我可以用

o.__repr__() 

来看一些像这样的东西

'<__main__.A object at 0x9d78fec>'

但是,比如说,一个Django用户只返回

<User:bob>

我怎么才能看到其中一个对象的实际地址,或者比较这两个模型对象是否真的是同一个对象呢?

3 个回答

1

可以使用id()这个函数来实现这个功能。或者你也可以直接比较“obj1是否是obj2”。

2

你可以获取任何对象的id:

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

虽然在CPython中,这个id实际上是对象的地址,但我认为这并不是一定的(在其他实现,比如Iron Python中可能会不同)。不过,相同的id代表的是同一个对象。

7

id() 这个函数会返回一个对象的身份标识(通常是对象在内存中的地址),这个标识对于同一时刻存在的两个对象来说是唯一的。不过,检查两个对象是否完全相同的最简单方法是使用专门为此设计的运算符:is

也就是说:

 if obj1 is obj2: 
     # Objects are identical.

撰写回答