擅长:python、mysql、java
<p>如果你想要更多的信息除了丹尼尔·罗斯曼的回答:</p>
<p>在python中,<code>__repr__</code>和<code>__str__</code>是两个不同的东西。(但是,请注意,如果您只定义了<code>__repr__</code>,那么对<code>class.__str__</code>的调用将转换为对<code>class.__repr__</code>的调用)</p>
<p><code>__repr__</code>的目标是明确无误。另外,如果可能的话,您应该定义repr以便(在您的情况下)<code>eval(repr(instance)) == instance</code></p>
<p>另一方面,<code>__str__</code>的目标是可以重新设计;因此,如果必须在屏幕上打印实例(可能是对用户而言),如果不需要,那么就不要实现它(同样,如果未实现中的str将被称为repr),这很重要</p>
<p>另外,当在空闲解释器中键入内容时,它会自动调用对象的repr表示。或者当您打印一个列表时,它调用<code>list.__str__</code>(与<code>list.__repr__</code>相同),依次调用列表中包含的任何元素的repr表示。这解释了你的行为,并希望如何解决它</p>