类实例 str 和 repr 方法的字符串表示
关于实现这两种方法的说明
当两种方法都实现时,有一个 __str__
方法返回一个人性化的表示(例如 Ace of Spaces
)和 __repr__
返回一个 eval
友好的表示,这有点常见。
对于许多类型,此函数尝试返回一个字符串,该字符串在传递给
eval()
时会产生具有相同值的对象,否则表示形式是一个用尖括号括起来的字符串,它包含对象类型的名称附加信息通常包括对象的名称和地址。
这意味着 __str__
可能被实现为返回如前所示的 Ace of Spaces
之类的内容,__repr__
可能会被实现为返回 Card('Spades', 1)
这个字符串可以通过某种往返直接传递回 eval
:
object -> string -> object
这种方法的实现示例可能是:
def __repr__(self):
return "Card(%s, %d)" % (self.suit, self.pips)
笔记
[1]此输出是特定于实现的。显示的字符串来自 cpython。
[2]你可能已经看到了这个 str()
/ repr()
划分的结果而不知道它。当包含特殊字符(如反斜杠)的字符串通过 str()
转换为字符串时,反斜杠显示为原样(它们出现一次)。当它们通过 repr()
转换为字符串时(例如,作为显示列表的元素),反斜杠将被转义并因此出现两次。