每门面向对象的语言至少都有一种获取对象的字符串表示形式的标准方式。Python 提供了两种方式。
repr()
以便于开发者理解的方式返回对象的字符串表示形式。
str()
以便于用户理解的方式返回对象的字符串表示形式。
正如你所知,我们要实现 __repr__ 和 __str__ 特殊方法,为 repr() 和 str() 提供支持。
为了给对象提供其他的表示形式,还会用到另外两个特殊方法:__bytes__ 和 __format__。__bytes__ 方法与 __str__ 方法类似:bytes() 函数调用它获取对象的字节序列表示形式。而 __format__ 方法会被内置的 format() 函数和 str.format() 方法调用,使用特殊的格式代码显示对象的字符串表示形式。我们将在下一个示例中讨论 __bytes__ 方法,随后再讨论 __format__ 方法。
如果你是从 Python 2 转过来的,记住,在 Python 3 中,
__repr__、__str__和__format__都必须返回 Unicode 字符串(str类型)。只有__bytes__方法应该返回字节序列(bytes类型)。