python's docs

1.2.2 magic method: repr


0. repr简介

repr是python的内置函数,repr 就是通过__repr__这个特殊方法来得到一个对象的字符串表示形式的。
如果我们自定义一个对象没有__repr__方法的话,我们无法通过print函数来打印它。


1. __repr__

没有__repr__时,打印出来的是object的内存信息

class Hometown(object):
    def __init__(self):
      pass

myhome = Hometown()
print myhome
<__main__.Hometown object at 0x7feab4816410>

自定义__repr__后,我们可以控制打印的内容

class Hometown(object):
    def __init__(self):
      pass
    def __repr__(self):
      return "BeiJing"

myhome = Hometown()
print myhome
BeiJing

2. __repr__ vs __str__

  • __repr__ 的目标是明确
  • __str__ 的目标是可读

如果你只想实现这两个特殊方法中的一个,__repr__ 是更好的选择,因为如果一个对象没有 __str__ 函数,而 Python 又需要调用它的时候,解释器会用 __repr__ 作为替代。

https://stackoverflow.com/questions/1436703/difference-between-str-and-repr-in-python