擅长:python、mysql、java
<p>这就是所谓的XY问题。你的第一个问题完全不相干。在</p>
<p>相反,你应该</p>
<ul>
<li>或者将您的<code>self.units</code>修改为正确的格式(如果我没弄错,您使用的是python3?您应该在标签中宣布您的Python主要版本…)</li>
<li><p>或者把它转换成</p>
<pre><code>class MyNumber(float):
def __repr__(self):
return str(self) + " " + str(self.units)
</code></pre></li>
</ul>
<p>这个答案是我猜测<code>self.units</code>可能不是<code>str</code>,而是<code>unicode</code>对象。默认情况下,它的隐式转换可能失败,<code>ascii</code>编解码器用于解码。在</p>
<p>您应该确保不要混淆原始字符串和unicode字符串。在</p>
<p>如果<code>str(self.units)</code>不起作用,您可能需要将其替换为<code>self.units.decode("utf8")</code>。在</p>
<p>要弄清楚这个过程:</p>
<p>在提示符处输入<code>a</code>将以某种方式显示<code>repr(a)</code>的结果。在</p>
<p><code>repr(a)</code>调用<code>a.__repr__()</code>,<strong>检查其类型(必须是<code>str</code>)</strong>并显示它。在</p>
<p>我不清楚为什么<code>a</code>或{<cd9>}失败,而<code>a.__repr__()</code>起作用,这就是为什么我一直询问异常的回溯。。。在</p>