欢迎访问宙启技术站
智能推送

如何使用repr()函数获取Python对象的 标识符

发布时间:2023-12-16 21:49:20

在Python中,可以使用内置的repr()函数来获取对象的 标识符。repr()函数返回一个对象的字符串表示,其中包含了对象的类型和内存地址。

示例如下:

class MyClass:
    def __init__(self, name):
        self.name = name
    
    def __repr__(self):
        return f'MyClass({self.name})'

# 创建对象
obj1 = MyClass('Object 1')
obj2 = MyClass('Object 2')

# 打印对象的字符串表示
print(repr(obj1))
print(repr(obj2))

运行上述代码,将得到以下输出:

MyClass(Object 1)
MyClass(Object 2)

在上述示例中,我们定义了一个名为MyClass的类,它包含一个name属性和一个__repr__()方法。__repr__()方法返回一个以MyClass(name)形式表示的字符串,其中name是对象的名称。

通过调用repr()函数,并将对象作为参数传递给它,我们可以获取对象的字符串表示。在这个例子中,repr(obj1)将返回MyClass(Object 1)repr(obj2)将返回MyClass(Object 2)

需要注意的是,repr()函数返回的字符串表示中包含了对象的内存地址,这就是对象的 标识符。每个对象在内存中都有一个 的地址,repr()函数就是利用这个地址来 标识对象的。

下面,让我们再来看一个更复杂的例子,来演示repr()函数如何获取对象的 标识符。

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    
    def __repr__(self):
        return f'Point({self.x}, {self.y})'

# 创建对象
p1 = Point(1, 2)
p2 = Point(3, 4)

# 打印对象的字符串表示
print(repr(p1))
print(repr(p2))

运行上述代码,将得到以下输出:

Point(1, 2)
Point(3, 4)

在这个例子中,我们定义了一个名为Point的类,它包含x和y两个属性以及一个__repr__()方法。__repr__()方法返回一个以Point(x, y)形式表示的字符串,其中x和y分别是点的坐标。

我们通过创建两个Point对象并调用repr()函数来获取它们的字符串表示。在这个例子中,repr(p1)将返回Point(1, 2)repr(p2)将返回Point(3, 4)。这个字符串表示中不仅包含了对象的属性值,还包含了每个对象的 标识符。

需要注意的是,repr()函数返回的字符串表示只是用于调试和显示的目的,它并不用于 标识对象。如果需要获取对象的真正 标识符,可以使用内置的id()函数。例如:

print(id(obj1))
print(id(obj2))

运行上述代码,将得到对象的 标识符,类似于以下形式的整数值:

140447469228464
140447469228536

总结起来,使用repr()函数可以获取Python对象的字符串表示,其中包含了对象的类型和内存地址。这个字符串表示可以用于调试和显示的目的,但如果需要获得对象的真正 标识符,应该使用内置的id()函数。