擅长:python、mysql、java
<p>您还没有向我们展示您得到的实际错误消息,但我将假设您误解了它,实际上是说您只传递了<em>两个</em>参数给一个期望<em>三个</em>的方法。具体来说,我认为问题不在于此代码块:</p>
<pre><code>if isinstance(number,Dog):
number.skip(to,store,happier)
self.jumper.append(number)
</code></pre>
<p>但后面的那个:</p>
<pre><code>if isinstance(number,Cat):
number.skip(to,store)
self.jumper.append(number)
</code></pre>
<p>因为<code>Dog</code>是<code>Cat</code>的子类,<code>Dog</code>的任何实例也是<code>Cat</code>的实例。因此,如果<code>number</code>是<code>Dog</code>,那么第一个代码块将成功运行,然后,因为您使用的是<code>if</code>而不是<code>elif</code>,第二个代码块将尝试执行,Python将尝试调用<code>Dog</code>上的<code>.skip(to, store)</code>,这不起作用,因为<code>Dog</code>的<code>skip</code>需要三个参数。你知道吗</p>
<p>从这个做作的例子中不清楚您首先要做什么,但我怀疑解决问题的最佳方法是将第二个<code>if</code>改为<code>elif</code>,这样<code>Dog</code>就不会被视为非<code>Dog</code><code>Cat</code>了</p>