在Python中,repr()函数用于获取一个对象的字符串表示形式,这个字符串是可以用来重新创建该对象的一个有效的表达式;该函数通常被用于调试和日志记录。

在理想情况下,repr()函数的返回值可被用于重构对象:

lst = [1, 2, 3]
lst2 = eval(repr(lst))
print(lst == lst2) # True

与 str() 函数的区别

str()函数返回用户友好的可读字符串;而repr()返回对开发者友好的精确表示。

__repr__() 方法

repr()函数实际调用对象的__repr__()方法:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"Person: {self.name}, {self.age}"

    def __repr__(self):
       return f"Person('{self.name}', {self.age})"

p = Person("Alice", 30)
print(str(p))   # Person: Alice, 30
print(repr(p))  # Person('Alice', 30)
p2 = eval(repr(p))
print(p2.name) # Alice

__repr__()返回的值应该是一个可用于重构对象的有效表达式;