Python 中类的 __repr__
方法用于将对象转换为可打印的字符串形式,以便于调试和查看对象信息。在 Python 标准库中,很多类都实现了这个方法,比如列表、字典等容器类,当我们用 print 函数打印这些对象时,实际上是调用了它们的 __repr__
方法来输出字符串形式的信息。
下面是 __repr__
方法的使用方法:
class MyClass:
def __init__(self, value):
self.value = value
def __repr__(self):
return f'MyClass({self.value})'
在上面的示例中,我们定义了一个带有属性 value 的类 MyClass,并重写了 __repr__
方法。该方法返回一个字符串,该字符串包含类名以及其属性值。
我们可以使用以下代码来创建 MyClass 的实例,并调用其 __repr__
方法:
obj = MyClass(10)
print(repr(obj)) # MyClass(10)
接下来,让我们看一个更复杂的例子。考虑一下一个表示二维向量的类:
class Vector2D:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f'Vector2D({self.x}, {self.y})'
def __add__(self, other):
return Vector2D(self.x + other.x, self.y + other.y)
在上面的示例中,我们定义了一个带有坐标 x 和 y 的二维向量类 Vector2D,并重写了 __repr__
方法。此外,我们还实现了 __add__
方法,用于向量加法。
现在让我们测试一下 Vector2D 类:
vec1 = Vector2D(1, 2)
vec2 = Vector2D(3, 4)
# 打印__repr__方法返回的字符串
print(vec1) # Vector2D(1, 2)
print(vec2) # Vector2D(3, 4)
# 使用加法运算符
vec3 = vec1 + vec2
print(vec3) # Vector2D(4, 6)
在上面的示例中,我们创建了两个 Vector2D 类的实例 vec1 和 vec2,然后使用加法运算符将它们加在一起,得到了一个新的 Vector2D 实例 vec3。
最后,我们输出这些向量对象的字符串表示形式,可以看到这些对象在调用 __repr__
方法时返回的字符串非常具有描述性。