Python:如何在__repr__方法中获取对象的地址?

Mar*_*son 4 python

如何获取对象的地址以包含在对象表示中,类似于默认的__repr__工作方式?

>>> a=object()
>>> a
<object object at 0x1002c8090>

class Foo(object):
    def __repr__(self):
        return '<my stuff, at '+obj_address+'>' # how do I get object address?
Run Code Online (Sandbox Code Playgroud)

Wil*_*ley 8

地址是十六进制对象的ID:

>>> o = object()
>>> repr(o)
'<object object at 0x1028ed080>'
>>> id(o)
4337881216
>>> hex(id(o))
'0x1028ed080'
Run Code Online (Sandbox Code Playgroud)

  • 更准确地说,对象的 id() 是“一个保证该对象在其生命周期内唯一且恒定的整数”。在 CPython 参考实现中,它恰好是地址,但不一定是。 (2认同)

GP8*_*P89 5

class Foo(object):
    def __repr__(self):
        return '<my stuff, at 0x%x>' % id(self)
Run Code Online (Sandbox Code Playgroud)