请看下面的示例:
打印函数(__str__)的输出比__repr__输出难以阅读。它是一行很长的文本,会自动换行成多行而且没有空格。两个输出都足够明确,可以根据其输出重新构建对象。
反过来的输出方式是否更有意义呢?使用__repr__提供紧凑的表示,而__str__则具有更易读的换行方式。
In [33]: test = {x:str(x)*10 for x in range(10)}
In [35]: print test
{0: '0000000000', 1: '1111111111', 2: '2222222222', 3: '3333333333', 4: '4444444444', 5: '5555555555', 6: '6666666666', 7: '7777777777', 8: '8888888888', 9: '9999999999'}
In [34]: test
Out[34]:
{0: '0000000000',
1: '1111111111',
2: '2222222222',
3: '3333333333',
4: '4444444444',
5: '5555555555',
6: '6666666666',
7: '7777777777',
8: '8888888888',
9: '9999999999'}
打印函数(__str__)的输出比__repr__输出难以阅读。它是一行很长的文本,会自动换行成多行而且没有空格。两个输出都足够明确,可以根据其输出重新构建对象。
反过来的输出方式是否更有意义呢?使用__repr__提供紧凑的表示,而__str__则具有更易读的换行方式。
repr(test) == str(test)
- Aran-Feyrepr
被IPython优化了。 - georgexsh