Pygame,' Class'对象没有属性rect

时间:2015-07-15 23:12:49

标签: python pygame

我正在用python和pygame制作一个简单的游戏,并且我试图通过使用for循环来填充屏幕上的敌人。在我的游戏的其他部分,我看起来像是相同的代码,但无论出于何种原因,我都会收到错误

  

AttributeError:' Enemy对象没有属性' rect'

我将enemy.rect.xenemy.rect.y的值更改为500和500只是为了查看它是否是我正在使用的变量导致错误,但它不是。

这里是完整代码的pastebin ... http://pastebin.com/ZJ2u9w7t

完整的追溯是:

Traceback (most recent call last):
File "D:\Projects portfolio\PythonStuff\ShipTest.PY", line 119, in <module>
main()

File "D:\Projects portfolio\PythonStuff\ShipTest.PY", line 109, in main
enemy.rect.x = 500
AttributeError: 'Enemy' object has no attribute 'rect'
[Finished in 1.0s]

2 个答案:

答案 0 :(得分:0)

看第73行:

def __init_(self):

您可能更喜欢:

def __init__(self):

鉴于你的拼写错误,你的Enemy类在实例化它时没有构造函数,但是,你确实有一个无用的方法__init_。因此,当您执行AttributeError时,您会获得.rect.x

编辑:半无用,因为您在super().__init__()内拨打__init_,您仍会得到一些预期的行为。

答案 1 :(得分:0)

事实是你忘记了下划线。

在你的代码的第73行,你不小心写了这个:

def __init_(self):

你缺少一个下划线(最后一个)。你有两个在左侧,一个在右侧。要正确完成初始化,您需要添加如下所示的下划线:

def __init__(self):

这将允许Enemy类有一个矩形,因为你还有self.rect = self.image.get_rect()。如果它是代码中唯一的错误/第一个错误,则缺少的下划线将始终引发Attribute Error