Python 小提示: Python中的`__repr__`和`__str__`
-
__repr__
和__str__
貌似很类似,执行后都是返回对象的字符串结果,使用时的区别是什么呢?看看标准库datetime
的处理方式:>>> import datetime >>> today = datetime.date.today() # str函数调用的是对象的__str__内置函数,其返回值要求清晰易读 >>> str(today) '2018-02-01' # repr函数调用的是对象的__repr__内置函数,其返回值要求无歧义,并且往往能被eval再次转换回对应的对象 >>> repr(today) 'datetime.date(2018, 2, 1)' # 通过eval将字符串'datetime.date(2018,2,1)'再次转换回对应的datetime.date对象(注意结果不是字符串) >>> eval('datetime.date(2018, 2, 1)') datetime.date(2018, 2, 1)