Python(repr())
在 Python 中,repr
是 representation
的缩写。它是一个内置函数,用于返回对象的官方字符串表示形式。这通常是一个可以用来重新创建对象的字符串,或者至少是对开发者友好的字符串,便于调试和理解对象的内容。
在代码中,return repr(self.value)
的作用是返回 self.value
的官方字符串表示形式。让我们更详细地看看这个函数的用途和行为:
1. repr
函数
-
官方字符串表示:
repr
函数返回一个对象的官方字符串表示,这个表示通常是可以用来重新创建这个对象的表达式(如果这是可能的)。- 当你在控制台中直接输入对象时,Python 也会调用
repr
函数来显示对象的字符串表示。
-
调试友好:
repr
函数返回的字符串通常比str
函数返回的字符串更详细,适合开发和调试使用。- 例如,
repr
会在字符串周围加上引号,并转义特殊字符,使其更易于理解和调试。
2. 示例代码
假设有一个类,其中包含一个 value
属性,并且该类的 __repr__
方法使用 repr
函数返回 value
的表示形式:
class MyClass:
def __init__(self, value):
self.value = value
def __repr__(self):
return repr(self.value)
# 创建一个对象
obj = MyClass("Hello, world!")
# 打印对象
print(repr(obj)) # 输出:'Hello, world!'
在上面的示例中:
MyClass
类有一个value
属性。__repr__
方法返回self.value
的官方字符串表示。- 当我们使用
print(repr(obj))
打印对象时,它显示的是self.value
的官方字符串表示,即'Hello, world!'
。
3. repr
与 str
的区别
repr(obj)
返回的字符串应该尽可能是合法的 Python 表达式,可以用来重建对象。str(obj)
返回的是一个可读性更强的字符串表示,适合展示给用户。
例如:
import datetime
now = datetime.datetime.now()
print(repr(now)) # 输出:datetime.datetime(2024, 7, 10, 12, 34, 56, 789012)
print(str(now)) # 输出:2024-07-10 12:34:56.789012
在这个例子中,repr(now)
返回的是一个可以用来重新创建 now
对象的表达式,而 str(now)
返回的是一个更易读的日期时间字符串。