擅长:python、mysql、java
<p><code>__str__</code>方法非常小心地确保所有内容都是一个<code>str</code>,因此它返回一个<code>str</code>。</p>
<p><code>show</code>方法依赖于print隐式地将<code>self.num</code>和<code>self.den</code>转换为str。它将结果显示为副作用,并且不返回任何结果</p>
<p><code>print</code>将在每个参数之间插入一个空格。</p>
<pre><code>>>> str(3)+"/"+str(5)
'3/5'
>>> print(3,"/",5)
3 / 5
</code></pre>
<p>如果你不在乎额外的空间,真的没有理由不使用</p>
<pre><code>def show(self):
print(self)
</code></pre>
<p>也许作者认为不这样做更清楚。</p>
<p>当你试图创建一个子类时,这种方式分离<code>show</code>和<code>__str__</code>也可能令人惊讶。如果子类重写<code>__str__</code>,那么您可能也会希望该更改反映在<code>show</code>中。</p>