Python 中 __str__ 和 __repr__ 之间的区别是什么?
内置函数 repr() 和 str() 分别调用 object.__repr__(self) 和 object.__str__(self) 方法。第一个函数计算对象的正式表示,而第二个函数返回对象的非正式表示。
对于整数对象而言,这两个函数的结果是相同的。
>>> x = 1 >>> repr(x) '1' >>> str(x) '1'
但对于字符串对象则不是这样。
>>> x = "Hello" >>> repr(x) "'Hello'" >>> str(x) 'Hello'
字符串对象的 repr() 的返回值可以由 eval() 函数求值并且生成有效的字符串对象。但 str() 的结果不能求值。
>>> y1 = repr(x) >>> eval(y1) 'Hello' >>> y2 = str(x) >>> eval(y2) NameError: name 'Hello' is not defined
总结。repr() 返回对象的默认且明确的表示,而 str() 给出非正式的表示形式,可以读取,但可能并不总是明确的。
广告