📅  最后修改于: 2023-12-03 15:04:34.105000             🧑  作者: Mango
在Python中,str() 和 repr() 都是用于将对象转化为可打印的字符串。不同之处在于它们的输出格式。
当你打印一个对象时,实际上调用的是该对象的 __str__
方法。str() 函数也是这样,它返回一个易于阅读的字符串,它是给用户看的。例如:
>>> num = 10/3
>>> print(num)
3.33333333333
>>> print(str(num))
3.33333333333
当你使用 str()
函数时,它将返回一个用于显示给用户的字符串。
repr() 返回一个字符串,它是给解释器(开发者)看的。这个字符串可以用来重新创建对象。例如:
>>> num = 10/3
>>> print(repr(num))
3.3333333333333335
当你使用 repr()
函数时,它会返回一个用于重新创建该对象的字符串表示形式。事实上,如果一个对象没有 __str__
方法,Python 将会调用它的 __repr__
方法来获得一个字符串,以便在控制台中打印。所以,在此无需手动编写 __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