我注意到,当具有重载的 __str__
方法的实例作为参数传递给 print
函数时,它会按预期打印。但是,当将包含这些实例之一的容器传递给 print
时,它会改用 __repr__
方法。也就是说,print(x)
显示了 x
的正确字符串表示,并且 print(x, y)
工作正常,但是 print([x])
或 print((x, y))
打印 __repr__
表示。
首先,为什么会发生这种情况?其次,在这种情况下,有没有办法纠正 print
的这种行为?
最佳答案
使用对象的 __str__
的容器的问题是总的歧义——比如说,如果 print L
显示 [1 , 2]
? L
可以是 ['1, 2']
(其字符串项包含逗号的单个项目列表)或四个 2 项列表中的任何一个(因为每个项目都可以是字符串或整数)。 print
类型的歧义当然很常见,但项目数量的总歧义(因为每个逗号可能是分隔项目的或部分字符串项目)是决定性的考虑因素。
关于python - 使用 __str__ 表示在容器中打印对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2634552/