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

创建Pygame窗口时遇TypeError:run_game()缺少self参数求助

问题解决:TypeError: AlienInvasion.run_game() missing 1 required positional argument: 'self'

错误原因

你没有正确创建AlienInvasion类的实例,只是把类本身赋值给了变量a1。当调用a1.run_game()时,Python将a1视为类而非实例,无法自动传入代表实例本身的self参数,因此报错。

修复方法

修改主程序段的实例化代码,给类名加上括号,完成实例创建:

if __name__ == '__main__':  
    # 创建游戏实例并运行
    a1 = AlienInvasion()  # 必须加括号,生成类的实例对象
    a1.run_game()

完整修复后的代码

import sys  
import pygame  
from settings import Settings  

class AlienInvasion:    
    """管理游戏资源与行为的总类"""    

    def __init__(self):
        """初始化游戏,创建资源"""
        pygame.init()

        self.bg_color = (230, 230, 230)
        self.settings = Settings()

        self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))
        pygame.display.set_caption('Alien Invasion')

    def run_game(self):
        """启动游戏主循环"""
        while True:
            # 监听键鼠事件
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()

            # 每次循环重绘屏幕
            self.screen.fill(self.settings.bg_color)

            # 让最近绘制的屏幕可见
            pygame.display.flip()

if __name__ == '__main__':  
    # 创建游戏实例并运行
    a1 = AlienInvasion()
    a1.run_game()

验证效果

修改后运行程序,将正常显示对应尺寸和背景色的Pygame窗口,点击关闭按钮可正常退出程序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:32:53