解释Python中的str()与repr()函数
官方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)'
我们看到它也返回了一个字符串,但是该字符串是日期时间对象的“官方”表示形式,这意味着该“官方”字符串表示形式可以重构该对象-
>>> eval('datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)') datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)
在eval()
内置函数接受一个字符串,并将其转换为一个DateTime对象。
因此,在一般情况下,我们编写的每个类都必须具有__repr__,并且如果您认为拥有对象的字符串版本会很有用,例如在datetime的情况下,请创建__str__函数。