如何访问对象内存地址?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (50)

当你调用给object.__repr__()在Python中,您可以得到类似于以下内容的内容:

<main.Test object at 0x2aba1c0cf890>

如果你overload__repr__(),有什么方法可以获得内存地址吗?然后调用super(Class, obj).__repr__()然后再恢复?

提问于
用户回答回答于

在CPython中,这将是对象的地址。但是,对于任何其他Python解释器,都没有这样的保证。

注意,如果您正在编写一个C扩展,您可以完全访问Python解释器的内部,包括直接访问对象的地址。

用户回答回答于

您可以以这样的方式重新实现默认的repr:

def __repr__(self):
    return '<%s.%s object at %s>' % (
        self.__class__.__module__,
        self.__class__.__name__,
        hex(id(self))
    )

扫码关注云+社区