解释 Python 中的 str() 与 repr() 函数

pythonserver side programmingprogramming

Python 官方文档称 __repr__ 用于查找对象的"官方"字符串表示,而 __str__ 用于查找对象的"非正式"字符串表示。print 语句和 str() 内置函数使用 __str__ 显示对象的字符串表示,而 repr() 内置函数使用 __repr__ 显示对象。让我们举一个例子来了解这两种方法实际上做了什么。

让我们创建一个 datetime 对象 −

>>> import datetime
>>> today = datetime.datetime.now()
When I use the built-in function str() to display today:
>>> str(today)
'2018-01-12 09:21:58.130922'

我们看到日期以字符串的形式显示,这样用户可以理解日期和时间。现在让我们看看何时使用内置函数 repr()−

>>> repr(today)
'datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)'

我们看到这也返回了一个字符串,但该字符串是 datetime 对象的"官方"表示,这意味着这个"官方"字符串表示可以重建对象 −

>>> eval('datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)')
datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)

eval() 内置函数接受字符串并将其转换为 datetime 对象。

因此,一般来说,我们编写的每个类都必须有一个 __repr__,如果您认为拥有对象的字符串版本会很有用,例如在 datetime 的情况下,请创建一个 __str__ 函数。


相关文章


有用资源