You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame报错AttributeError: 'Game'对象无'run'属性求助

解决Pygame中'Game'对象无'run'属性的错误

你的核心问题是把Game类的所有方法都嵌套定义在了__init__方法内部,导致这些方法不属于类的成员,外部实例自然无法调用。除此之外还有几处语法和拼写错误,下面是问题点和修正后的代码:

问题列表

  • 类方法缩进错误:new_game、update、check_event、draw、run这些方法应该和__init__同级,不能嵌套在__init__里面
  • Pygame初始化错误:pg.init少了括号,应该是pg.init(),否则不会真正初始化Pygame
  • 拼写错误:pg.evernt.get()里的evernt是笔误,正确写法是pg.event.get()
  • run方法参数错误:参数名写成了seld,应该是标准的self
  • draw方法缩进错误:它被嵌套在了check_event方法内部,需要调整到类级别
  • QUIT事件判断错误:应该用event.type == pg.QUIT,而非event == pg.QUIT

修正后的完整代码

import pygame as pg
import sys
from settings import *

class Game:
    def __init__(self):
        pg.init()  # 修正:添加括号完成初始化
        self.screen = pg.display.set_mode(RES)
        self.clock = pg.time.Clock()

    def new_game(self):
        pass

    def update(self):
        pg.display.flip()
        self.clock.tick(FPS)
        pg.display.set_caption(f'{self.clock.get_fps() :.1f}')
    
    def check_event(self):
        for event in pg.event.get():  # 修正:拼写错误evernt改为event
            # 修正:正确判断QUIT事件类型
            if event.type == pg.QUIT or (event.type == pg.KEYDOWN and event.key == pg.K_ESCAPE):
                pg.quit()
                sys.exit()

    def draw(self):
        self.screen.fill('black')

    def run(self):  # 修正:参数名seld改为self
        while True:
            self.check_event()
            self.update()
            self.draw()

if __name__ == '__main__':
    game = Game()
    game.run()

内容的提问来源于stack exchange,提问作者The Riddler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:50:21