【发布时间】:2009-07-02 15:35:53
【问题描述】:
一个普通的对象,我可以用
o.__repr__()
看到类似的东西
'<__main__.A object at 0x9d78fec>'
但是,比如说,一个 Django 用户只是返回
<User:bob>
如何查看其中一个的实际地址,或者比较两个这样的模型对象是否实际上是同一个对象?
【问题讨论】:
标签: python django django-models
一个普通的对象,我可以用
o.__repr__()
看到类似的东西
'<__main__.A object at 0x9d78fec>'
但是,比如说,一个 Django 用户只是返回
<User:bob>
如何查看其中一个的实际地址,或者比较两个这样的模型对象是否实际上是同一个对象?
【问题讨论】:
标签: python django django-models
id()会返回对象的标识(一般实现为地址),保证同时存在的两个对象的唯一性。然而,检查两个对象是否相同的明显方法是使用为此明确设计的运算符:is
即。
if obj1 is obj2:
# Objects are identical.
【讨论】:
你可以得到任何对象的id:
a = object()
print hex(id(a))
虽然对于 CPython,这是对象的地址,但我相信这不能保证(并且在其他实现上可能会有所不同,例如 Iron python)。但是,相同的 id 意味着相同的对象。
【讨论】:
为此使用 id() 函数。或者等价地比较“obj1 is obj2”。
【讨论】: