Skip to main content
 首页 » 编程设计

python之尝试在 Python 中创建对象时出错

2025年05月04日18tintown

我正在尝试从 python 中的类创建对象,但出现错误,“e_tank = EnemyTank() TypeError: 'Group' 对象不可调用"

我不确定这是什么意思,我试过谷歌但我无法得到导致此错误的明确答案。有谁知道为什么我无法从我的 EnemyTank 类创建对象?

这是我的代码:

#Image Variables 
bg = 'bg.jpg' 
bunk = 'bunker.png' 
enemytank = 'enemy-tank.png' 
 
#Import Pygame Modules 
import pygame, sys 
from pygame.locals import * 
 
#Initializing the Screen 
pygame.init() 
screen = pygame.display.set_mode((640,360), 0, 32) 
 
background = pygame.image.load(bg).convert() 
 
 
 
bunker_x, bunker_y = (160,0) 
 
 
 
class EnemyTank(pygame.sprite.Sprite): 
    e_tank = pygame.image.load(enemytank).convert_alpha() 
    def __init__(self, startpos): 
        pygame.sprite.Sprite.__init__(self, self.groups) 
        self.pos = startpos 
        self.image = EnemyTank.image 
        self.rect = self.image.get_rect() 
    def update(self): 
        self.rect.center = self.pos 
 
class Bunker(pygame.sprite.Sprite): 
    bunker = pygame.image.load(bunk).convert_alpha() 
    def __init__(self, startpos): 
        pygame.spriter.Sprite.__init__(self, self.groups) 
        self.pos = startpos 
        self.image = Bunker.image 
        self.rect = self.image.get_rect() 
    def getCollisionObjects(self, EnemyTank): 
        if (EnemyTank not in self._allgroup, False): 
            return False 
        self._allgroup.remove(EnemyTank) 
        result = pygame.sprite.spritecollide(EnemyTank, self._allgroup, False) 
        self._allgroup.add(EnemyTank) 
    def update(self): 
        self.rect.center = self.pos 
 
 
#Setting Up The Animation 
x = 0 
clock = pygame.time.Clock() 
speed = 250 
 
allgroup = pygame.sprite.Group() 
EnemyTank = allgroup 
Bunker = allgroup 
 
e_tank = EnemyTank() 
bunker = Bunker()5 
 
#Main Loop 
while True: 
    for event in pygame.event.get(): 
        if event.type == QUIT: 
            pygame.quit() 
            sys.exit() 
 
    screen.blit(background, (0,0)) 
    screen.blit(bunker, (bunker_x, bunker_y)) 
    screen.blit(e_tank, (x, 0)) 
    pygame.display.flip() 
 
    #Animation 
    milli = clock.tick() 
    seconds = milli/1000. 
    dm = seconds*speed 
    x += dm 
 
    if x>640: 
        x=0 
 
 
    #Update the Screen 
    pygame.display.update() 

请您参考如下方法:

您已经声明了一个名为 EnemyTank 的类,然后您用这一行覆盖了它:

EnemyTank = allgroup 

此时 EnemyTank 不再是一个类,而是一个组,并且不再可调用。你想要做的是:

allgroup pygame.sprite.Group() 
e_tank = EnemyTank() 
allgroup.add(e_tank) 
# Or.. 
e_tank.add(allgroup)