【问题标题】:How do I find the memory address of a Python / Django model object?如何找到 Python / Django 模型对象的内存地址?
【发布时间】:2009-07-02 15:35:53
【问题描述】:

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

o.__repr__() 

看到类似的东西

'<__main__.A object at 0x9d78fec>'

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

<User:bob>

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

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    id()会返回对象的标识(一般实现为地址),保证同时存在的两个对象的唯一性。然而,检查两个对象是否相同的明显方法是使用为此明确设计的运算符:is

    即。

     if obj1 is obj2: 
         # Objects are identical.
    

    【讨论】:

      【解决方案2】:

      你可以得到任何对象的id:

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

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

      【讨论】:

        【解决方案3】:

        为此使用 id() 函数。或者等价地比较“obj1 is obj2”。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-09-08
          • 1970-01-01
          • 2013-06-23
          • 2023-03-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多