实例内存地址

时间:2017-06-28 16:55:52

标签: python

当我创建一个类实例时,如果我打印实例名称,我会得到内存地址,如下面的代码所示:

Contents/Resources/app/bin

输出结果为:

class Car(object):
    def __init__(self, color, model):
        self.color = color
        self.model = model

civic = Car('blue', 'civic')
print civic

我觉得我可以用这些信息做很多事情,但我找不到我能做什么的信息。我应该使用这个内存地址?我可以将它存储到一些只引用内存地址的数据库中吗? 我很欣赏有关此可能性的任何信息。

1 个答案:

答案 0 :(得分:3)

你没有。它是一个不透明的值,让您区分不同的实例。 发生作为内存地址,但这是一个实现细节。

您看到的是id() function的返回值的十六进制转换:

  

返回对象的“标识”。这是一个整数,在该生命周期内保证该对象是唯一且恒定的。具有非重叠生存期的两个对象可能具有相同的id()值。

     

CPython实现细节:这是内存中对象的地址。

请注意实施细节

包含ID,因为只有普通<Car object>在有多个实例时几乎没有帮助。您还可以提供自己的__repr__ implementation,以使该字符串对您的应用程序更有用;你可以让它返回一个可重现的表达式,例如:

def __repr__(self):
    return f'Car({self.color!r}, {self.model!r})'

现在表示如下:

>>> Car('red', 'Ferrari')
Car('red', 'Ferrari')

在调试时可能会有所帮助。