当您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解释器的内部,包括直接访问对象的地址。
DIEA
TA贡献1820条经验 获得超2个赞
您可以通过以下方式重新实现默认代表:
def __repr__(self):
return '<%s.%s object at %s>' % (
self.__class__.__module__,
self.__class__.__name__,
hex(id(self))
)
添加回答
举报
0/150
提交
取消