我正在用python和pygame制作一个简单的游戏,并且我试图通过使用for循环来填充屏幕上的敌人。在我的游戏的其他部分,我看起来像是相同的代码,但无论出于何种原因,我都会收到错误
AttributeError:' Enemy对象没有属性' rect'
我将enemy.rect.x
和enemy.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]
答案 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
。