类inheritan中的Python/Pygame错误

2024-09-28 05:26:54 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我一直在研究类和继承,从我有限的理解来看,我认为属性应该被继承。但是,下面的第一组代码引发此错误:“AttributeError:type对象”“Characters”“没有具有以下代码的属性”“posX”“:

class Characters(object):
def __init__(self,health,posX,posY,width,height,dead,moveSpeed,yMove,xMove):
    self.health = health
    self.posX = posX
    self.posY = posY
    self.width = width
    self.height = height
    self.dead = dead
    #self.image = image
    self.yMove = yMove
    self.xMove = xMove


class Player(Characters):
def __init__(self,images,gameOver):
    self.images = (config.get('player'))
    self.gameOver = gameOver


def move(self):

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            self.gameOver = True

    keysPressed = pygame.key.get_pressed()

    if keysPressed[pygame.K_w]:
        Characters.yMove = -Characters.moveSpeed
        Characters.image = self.images[1]
    if keysPressed[pygame.K_s]:
        Characters.yMove = Characters.moveSpeed
        Characters.image = self.images[0]
    if keysPressed[pygame.K_a]:
        Characters.xMove = -Characters.moveSpeed
        Characters.image = self.images[2]
    if keysPressed[pygame.K_d]:
        Characters.xMove = Characters.moveSpeed
        Characters.image = pygame.transform.flip(self.images[2],True,False)

    Characters.posX += Characters.xMove
    Characters.posY += Characters.yMove

使用下面的代码,它抛出错误:AttributeError:'pygame.表面'对象没有属性'posX'

class Player(Characters):
def __init__(self,images,gameOver,posX,posY):
    self.images = (config.get('player'))
    self.gameOver = gameOver
    self.posX = posX
    self.posY = posY

def move(self):

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            self.gameOver = True

    keysPressed = pygame.key.get_pressed()

    if keysPressed[pygame.K_w]:
        Characters.yMove = -Characters.moveSpeed
        Characters.image = self.images[1]
    if keysPressed[pygame.K_s]:
        Characters.yMove = Characters.moveSpeed
        Characters.image = self.images[0]
    if keysPressed[pygame.K_a]:
        Characters.xMove = -Characters.moveSpeed
        Characters.image = self.images[2]
    if keysPressed[pygame.K_d]:
        Characters.xMove = Characters.moveSpeed
        Characters.image = pygame.transform.flip(self.images[2],True,False)

    self.posX += Characters.xMove
    self.posY += Characters.yMove

我尝试过使用*args**kwargssuper方法和Parent.__init__(self, attr1, attr2,...),但仍然会抛出相同的错误。我做错什么了吗?你知道吗


Tags: imageselfeventgetifpygameimagescharacters
1条回答
网友
1楼 · 发布于 2024-09-28 05:26:54

实例变量是继承的,因此只需通过self引用即可访问,不要使用Characters。作为一个基本示例:

class A(object):
    def __init__(self):
        self.foo = 3;

class B(A):
    def thefoo(self):
        print self.foo

b = B()
b.thefoo()

这里,B从A继承实例变量foo,如您所见,self.foo文件在B的实例中,返回继承的值。你知道吗

相关问题 更多 >

    热门问题