【问题标题】:Object has no attribute. Attribute Error: 'FoodSpawner' object has no attribure 'isFoodOnScreen'对象没有属性。 Attributeerror:“FoodSpawner”对象没有属性“isFoodOnScreen”
【发布时间】: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__ 中创建该属性,就像您说的那样,名称是错误的。

标签: python pygame


【解决方案1】:

据我所知,您在__init__ 中设置属性self.is_food_on_screen = True 并尝试访问仅在set_food_on_screen 中设置的self.isFoodOnScreen

如果您在set_food_on_screen 之前调用spawn_food,那么您将遇到此异常,因为self.isFoodOnScreen 不会作为实例属性存在。

您似乎想在使用self.isFoodOnScreen 的任何地方使用self.is_food_on_screen

【讨论】:

    【解决方案2】:

    您在 __init__ 方法中创建了 self.is_food_on_screen = True,

    ...

    然后尝试设置 isFoodOnScreen(骆驼式,而不是下划线)...

    我怀疑如果你让名字相同,你的错误就会消失。

    【讨论】:

    猜你喜欢
    • 2012-12-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2013-10-23
    相关资源
    最近更新 更多