为什么当我运行我的代码时它说“AttributeError:Enemy实例没有属性'敌人'”?

时间:2016-01-19 20:35:14

标签: python

我的代码可以在这里找到并运行:https://repl.it/Bda9/10

现在我专注于'探索'然后'攻击'路径,但由于某种原因,这段代码不会发生一次攻击。我需要至少在今晚工作。我们刚开始OOP而且......好吧......这让我感到很沮丧。

导致该错误的原因是什么? 为什么代码不能识别敌人(我认为这就是错误的含义)?

1 个答案:

答案 0 :(得分:2)

首先,你应该尝试pare down your code一个最小的例子,所以回答者不必做位于bug的工作。你还应该发布堆栈跟踪(repl.it提供它),这样我们就可以检查我们得到的错误和你做的错误。

Enemy.enemy_attacks方法出错。在此方法中,self引用Enemy对象,而不再引用Player对象,就像调用它的方法一样。敌人的属性,例如attack,是self的属性,而不是self.enemy的属性; Enemy对象没有enemy属性,因此当您尝试访问它时会出错。

另请注意,在此方法中,玩家为p(作为参数传递),而不是self.p(第66行;将玩家作为敌人的属性,但是你有意义“不这样做”或player(第69行,可能只是一个错字)。

您的困难似乎与self的含义有关。如果此答案不足以解决您的问题,请尝试编辑问题以添加您对self的含义的理解。