<p>您已经在路上了,并且已经定义了一个<code>__str__(self)</code>方法。这将覆盖默认的对象<code>__str__</code>方法。因此,每当您打印项目时,它都会以您定义的格式打印,实际上,每当您尝试以字符串方式使用类时,它都会调用此方法</p>
<p>但是,当您将它们放在列表中并打印列表时,对象表示将调用<code>__repr__</code>方法。这通常意味着表示如何创建此实例,但可以是您喜欢的任何内容</p>
<p>如果您只想返回相同的字符串表示形式,您可以这样做</p>
<pre><code> def __repr__(self):
return self.__str__()
</code></pre>
<p>如果您希望您的输出像您在问题中显示的那样,看起来像一个列表</p>
<pre><code> def __repr__(self):
return str([self.name, self.value, self.weight])
</code></pre>
<p>如果您想在构建类时表示它</p>
<pre><code> def __repr__(self):
return self.__class__.__name__ + "(" + ",".join((self.name, str(self.value), str(self.weight))) + ")"
</code></pre>
<p><strong>输出</strong></p>
<pre><code>[<clock, 175.0, 10.0>, <painting, 90.0, 9.0>, <radio, 20.0, 4.0>, <vase, 50.0, 2.0>, <book, 10.0, 1.0>, <computer, 200.0, 20.0>]
[[clock,175.0,10.0], [painting,90.0,9.0], [radio,20.0,4.0], [vase,50.0,2.0], [book,10.0,1.0], [computer,200.0,20.0]]
[Item(clock,175.0,10.0), Item(painting,90.0,9.0), Item(radio,20.0,4.0), Item(vase,50.0,2.0), Item(book,10.0,1.0), Item(computer,200.0,20.0)]
</code></pre>
<p>因此,您需要重写<code>__repr__</code>方法,但它如何呈现自己实际上取决于您</p>