当你在 Python 中调用 object.__repr__()
方法时,你会得到类似这样的结果:
<__main__.Test object at 0x2aba1c0cf890>
如果您重载 __repr__()
,除了调用 super(Class, obj).__repr__()
并将其正则表达式外,还有什么方法可以获取内存地址?
原文由 thr 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以通过这种方式重新实现默认 repr:
def __repr__(self):
return '<%s.%s object at %s>' % (
self.__class__.__module__,
self.__class__.__name__,
hex(id(self))
)
原文由 Armin Ronacher 发布,翻译遵循 CC BY-SA 2.5 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答884 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
Python 手册 中有关于
id()
的说法:所以在 CPython 中,这将是对象的地址。但是,任何其他 Python 解释器都没有这样的保证。
请注意,如果您正在编写 C 扩展,则您可以完全访问 Python 解释器的内部结构,包括直接访问对象的地址。