当您在Python语言中调用object.__repr__()
方法时,您会得到类似下面这样的结果:
位于0x2aba1c0cf890>的
<__main__.Test对象
如果重载__repr__()
,除了调用super(Class, obj).__repr__()
并重新执行它之外,还有什么方法可以获得内存地址吗?
发布于 2008-09-23 14:41:30
关于id()
,Python manual是这样说的
返回对象的标识。这是一个整数(或长整型),保证该对象在其生命周期内是唯一且恒定的。两个生命周期不重叠的对象可以有相同的id()值。(实现说明:这是对象的地址)。
因此在CPython中,这将是对象的地址。然而,对于任何其他Python解释器都没有这样的保证。
请注意,如果您正在编写C扩展,则可以完全访问Python解释器的内部结构,包括直接访问对象的地址。
发布于 2008-09-23 14:49:58
你可以这样重新实现默认的repr:
def __repr__(self):
return '<%s.%s object at %s>' % (
self.__class__.__module__,
self.__class__.__name__,
hex(id(self))
)
发布于 2008-09-23 14:37:25
只需使用
id(object)
https://stackoverflow.com/questions/121396
复制相似问题