【发布时间】:2020-01-15 18:21:03
【问题描述】:
我们正在尝试运行pygame 程序,但得到了AttributeError。这是我们收到的错误消息,他们所说的错误位于 Food Spawner 类的第 78 行。
Traceback (most recent call last):
File "\\lchs-file01\staff$\Tyson.Friesen\SYSTEM\Desktop\Python Junk File.py", line 120, in <module>
food_position = food_spawner.spawn_food()
File "\\lchs-file01\staff$\Tyson.Friesen\SYSTEM\Desktop\Python Junk File.py", line 78, in spawn_food
if self.isFoodOnScreen == False:
AttributeError: 'FoodSpawner' object has no attribute 'isFoodOnScreen'
这是我们试图运行的代码,我们对pygame 有点陌生,所以详细的帮助会很棒。谢谢。
class FoodSpawner():
#----------------------sets the food to spawn randomly
def __init__(self):
self.position = [random.randrange(1,50)*10], [random.randrange(1,50)*10]
self.is_food_on_screen = True
#----------------------
#----------------------resets food if it spawns of screen
def spawn_food(self):
if self.isFoodOnScreen == False:
self.position = [random.randrange(1,50)*10], [random.randrange(1,50)*10]
self.is_food_on_screen = True
return self.position
#----------------------
def set_food_on_screen(self,b):
self.isFoodOnSceen = b
【问题讨论】:
-
@aws_apprentice,看起来
__init__方法确实实例化了属性:self.is_food_on_screen = True -
isFoodOnScreen必须是is_food_on_screen -
@ColinMac 哎呀,你说得对,它们的名字都一样,一个是大写,另一个不是这让我感到困惑
-
@aws_apprentice... 事实证明您是对的... 他们在技术上并没有在
__init__中创建该属性,就像您说的那样,名称是错误的。