擅长:python、mysql、java
<p>如何阅读和理解错误消息,以便您能够帮助自己:</p>
<p>首先,我们读到:</p>
<pre><code>File "C:\Users\Caleb Walter\Downloads\Arena_Battler.py", line 150, in __init__
self.attackPower = int(player.attack + randint(-5,5))
AttributeError: 'str' object has no attribute 'attack'
</code></pre>
<p>第一行说明问题发生时我们所在的文件和行。第二行是导致问题的行的副本,因此我们可以查看它,而不必返回并查找它。最后一行是对实际问题的描述。在</p>
<p>因此,下一步是了解问题所在。<code>AttributeError</code>意味着我们试图从没有属性的东西中获取属性。剩下的部分说明我们试图从什么类型的东西(a <code>'str' object</code>,即一个字符串),以及我们试图得到什么(一个名为<code>attack</code>)的属性。在</p>
<p>下一步我们来看看有问题的那条线。我们从何处尝试从某物中获取名为<code>attack</code>的属性?显然,这是我们写的<code>player.attack</code>。因此,我们现在知道发生了什么:我们的代码试图从<code>player</code>变量中获取<code>attack</code>属性,但是<code>player</code>引用了一个字符串,而字符串没有<code>attack</code>属性。(显然,^{<cd11>的<code>attack</code>是什么?这没有任何意义。)</p>
<p>这是怎么发生的?好吧,如果我们编写了试图读取<code>attack</code>属性的代码,显然我们早就预料到了。我们不希望在字符串上有这样的属性,所以错误是我们在预期其他属性时,将一个字符串放入<code>player</code>。在</p>
<p>值如何进入<code>player</code>?它是函数的参数。因此,我们<strong>错误地调用了</strong>,我们找到了调用它的代码行(提示:<strong>查看堆栈跟踪中的前一个条目),并修复了周围的代码。我们应该通过什么?显然,有些东西确实有<code>attack</code>。你上过什么球员课吗?那么您应该传递该实例,而不是(玩家的?)名字什么的。在</p>