当我运行这个python脚本时:
#!/usr/bin/env python
# coding: windows-1250
lst = ['č']
s = 'č'
print lst
print s
我得到了这个输出:
['\xc4\x8d']
č
为什么它们看起来不同?
答案 0 :(得分:4)
print s
调用s.__str__()
,它返回一个编码字符串。
但是,print lst
会调用lst.__str__()
,而__repr__()
会在列表成员上调用__str__
。与__repr__
不同,不的class Test(object):
def __str__(self):
return "__str__ was called"
def __repr__(self):
return "__repr__ was called"
if __name__ == "__main__":
print Test()
print [Test(), Test()]
会返回已编码的字符串。
您可以使用以下测试代码进行确认:
__str__ was called
[__repr__ was called, __repr__ was called]
将输出:
{{1}}