__str__和__repr__的用法

Posted myiuni

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__str__和__repr__的用法相关的知识,希望对你有一定的参考价值。

__repr__ 目的是为了表示清楚,是为开发者准备的。

__str__ 目的是可读性好,是为使用者准备的。

我的理解是 __repr__ 应该尽可能的表示出一个对象来源的类以及继承关系,方便程序员们了解这个对象。而 __str__ 就简单的表示对象,而不要让不懂编程的以为输出的是 bug。

>>> import datetime
>>> today = datetime.datetime.now()
>>> str(today)
‘2012-03-14 09:21:58.130922‘
>>> repr(today)
‘datetime.datetime(2012, 3, 14, 9, 21, 58, 130922)‘
上表是来自 bitoffdev 的回答。

我们可以看到 str(today) 输出的很正常,哪个都看得懂。但是 repr(today) 的输出对不懂编程的就来说有点奇怪了,只懂一丢丢的还可能会以为自己搞出了啥幺蛾子呢。但是这对于有点经验的人来说这个就表示 today 对象是由 datetime 类实例化出来的。

以上是关于__str__和__repr__的用法的主要内容,如果未能解决你的问题,请参考以下文章

python之__str__用法

__str__和__repr的区别

__repr__与__str__

__str__ 和 __repr__

python3.x __str__与__repr__

python_魔法方法:__str__()和__repr__()