《Python Crash Course 3》游戏开发报错:Alien对象无add_internal属性
问题解决:AttributeError: 'Alien' object has no attribute 'add_internal'
不需要修改本地Python库,问题出在你的Alien类定义上。
错误原因
pygame.sprite.Group的add()方法要求添加的对象必须是pygame.sprite.Sprite的子类实例,只有这样才会包含add_internal等Sprite类的内置方法。你的Alien类虽然导入了Sprite,也调用了super().__init__(),但类定义时没有继承Sprite,导致Alien对象不具备Sprite的核心属性和方法。
修复方法
修改Alien类的定义,让它继承pygame.sprite.Sprite:
import pygame from pygame.sprite import Sprite # 类定义添加(Sprite),明确继承Sprite类 class Alien(Sprite): """A class to represent a single alien in the fleet.""" def __init__(self,ai_game): """Initialize the alien and set its starting point""" super().__init__() self.screen = ai_game.screen # 加载外星人图片并设置rect属性 self.image = pygame.image.load('images/alien.bmp') self.rect = self.image.get_rect() # 让新外星人从屏幕左上角附近开始 self.rect.x = self.rect.width self.rect.y = self.rect.height # 存储外星人的精确水平位置 self.x = float(self.rect.x)
验证修复
修改后重新运行游戏,Alien对象就能正常添加到self.aliens这个Sprite Group中,报错会消失。
内容的提问来源于stack exchange,提问作者rockslusture
相关产品推荐
相关产品推荐

