2009-07-02 80 views
0

一個普通的對象,我可以用如何找到Python/Django模型對象的內存地址?

o.__repr__() 

看到類似

'<__main__.A object at 0x9d78fec>' 

但是,比方說,一個Django用戶只需返回

<User:bob> 

我怎樣才能看到實際的地址或者比較兩個這樣的模型對象是否實際上是同一個對象?

+1

使用repr(o)not o .__ repr __() – 2009-07-02 16:39:52

回答

7

id()將返回對象的身份(通常以地址形式實現),對於存在於相同時間點的兩個對象,它是唯一的。然而,檢查兩個對象是否相同的明顯方法是使用爲此明確設計的運算符:is

即,

if obj1 is obj2: 
    # Objects are identical. 
1

使用id()函數。或者等價地比較「obj1是obj2」。

2

您可以得到任何對象的ID:

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

雖然CPython的,這是對象的地址,不能保證這一點,我相信(也可以是其他實現比如不同鐵蟒)。不過,相同的id表示同一個對象。