首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >访问对象内存地址

访问对象内存地址
EN

Stack Overflow用户
提问于 2008-09-23 22:35:00
回答 9查看 223.3K关注 0票数 196

当您在Python语言中调用object.__repr__()方法时,您会得到类似下面这样的结果:

位于0x2aba1c0cf890>的

<__main__.Test对象

如果重载__repr__(),除了调用super(Class, obj).__repr__()并重新执行它之外,还有什么方法可以获得内存地址吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-09-23 14:41:30

关于id()Python manual是这样说的

返回对象的标识。这是一个整数(或长整型),保证该对象在其生命周期内是唯一且恒定的。两个生命周期不重叠的对象可以有相同的id()值。(实现说明:这是对象的地址)。

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

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

票数 240
EN

Stack Overflow用户

发布于 2008-09-23 14:49:58

你可以这样重新实现默认的repr:

代码语言:javascript
复制
def __repr__(self):
    return '<%s.%s object at %s>' % (
        self.__class__.__module__,
        self.__class__.__name__,
        hex(id(self))
    )
票数 82
EN

Stack Overflow用户

发布于 2008-09-23 14:37:25

只需使用

代码语言:javascript
复制
id(object)
票数 62
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/121396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档