为了账号安全,请及时绑定邮箱和手机立即绑定

访问对象存储器地址

访问对象存储器地址

婷婷同学_ 2019-11-26 09:51:23
当您object.__repr__()在Python中调用该方法时,您会得到类似以下的信息:<__main__.Test object at 0x2aba1c0cf890> 如果您过载__repr__(),是否有任何方法可以保留该内存地址,super(Class, obj).__repr__()而不是调用并重新分配它?
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

在Python的手册已经这样说id():


返回一个对象的“身份”,这是一个整数(或长整数),在该对象的生存期内保证是唯一且恒定的。两个不重叠生存期的对象可能具有相同的id()值。 (实施说明:这是对象的地址。)


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


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


查看完整回答
反对 回复 2019-11-26
?
DIEA

TA贡献1820条经验 获得超2个赞

您可以通过以下方式重新实现默认代表:


def __repr__(self):

    return '<%s.%s object at %s>' % (

        self.__class__.__module__,

        self.__class__.__name__,

        hex(id(self))

    )


查看完整回答
反对 回复 2019-11-26
  • 3 回答
  • 0 关注
  • 449 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信