📜  Python中的 str() 与 repr()(1)

📅  最后修改于: 2023-12-03 15:04:34.105000             🧑  作者: Mango

Python中的 str() 与 repr()

在Python中,str() 和 repr() 都是用于将对象转化为可打印的字符串。不同之处在于它们的输出格式。

str()

当你打印一个对象时,实际上调用的是该对象的 __str__ 方法。str() 函数也是这样,它返回一个易于阅读的字符串,它是给用户看的。例如:

>>> num = 10/3
>>> print(num)
3.33333333333
>>> print(str(num))
3.33333333333

当你使用 str() 函数时,它将返回一个用于显示给用户的字符串。

repr()

repr() 返回一个字符串,它是给解释器(开发者)看的。这个字符串可以用来重新创建对象。例如:

>>> num = 10/3
>>> print(repr(num))
3.3333333333333335

当你使用 repr() 函数时,它会返回一个用于重新创建该对象的字符串表示形式。事实上,如果一个对象没有 __str__ 方法,Python 将会调用它的 __repr__ 方法来获得一个字符串,以便在控制台中打印。所以,在此无需手动编写 __repr__ 方法。

总结
  • str() 是用于返回一个易于阅读的字符串,它是给用户看的。
  • repr() 是用于返回一个给解释器看的字符串,它可以被用来重新创建对象。
  • 如果一个对象没有 __str__ 方法,Python 将会调用它的 __repr__ 方法来获得一个字符串,以便在控制台中打印。

因此,当你编写一个类时,要么编写 __str__ 方法和 __repr__ 方法,要么只编写 __repr__ 方法。这样,你就可以在控制台中打印有意义和正确的信息了。

class Example:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    
    def __repr__(self):
        return f"Example({self.x}, {self.y})"
    
    def __str__(self):
        return f"{self.x} - {self.y}"

obj = Example(5, 10)
print(repr(obj))
print(str(obj))

输出:

Example(5, 10)
5 - 10