【问题标题】:Python 3.5 AttributeError: 'Player' object has no attribute 'posX'Python 3.5 AttributeError:“玩家”对象没有属性“posX”
【发布时间】:2016-03-10 08:39:54
【问题描述】:

所以我找到了一些类似问题的答案,但它们似乎不适用于我的情况。下面是我尝试使用的类文件:

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.yMove = yMove
    self.xMove = xMove


class Player(Characters):
def __init__(self,images,gameOver):
    self.images = images
    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]:
        self.yMove = -self.moveSpeed
        self.image = self.images[1]
    if keysPressed[pygame.K_s]:
        self.yMove = self.moveSpeed
        self.image = self.images[0]
    if keysPressed[pygame.K_a]:
        self.xMove = -self.moveSpeed
        self.image = self.images[2]
    if keysPressed[pygame.K_d]:
        self.xMove = self.moveSpeed
        self.image = pygame.transform.flip(self.images[2],True,False)

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

    return (self.image,self.posX,self.posY,self.gameOver)

下面是我试图用来调用模块Player.move()的主要功能的一部分:

gameOver = False
playerPos = [None,(surfaceDim[0]/2,surfaceDim[1]/2),gameOver]

while not playerPos[2]:

    player = Characters.Player(playerImgs,gameOver)
    playerPos = player.move()

当我这样做时,它告诉我'Player' object has no attribute 'posX'。据我了解,Player 应该从 Characters 继承属性,但这里不是。我也尝试过使用super() 方法,但它告诉我我缺少变量。有什么建议吗?

【问题讨论】:

  • 你确实需要使用 super.你应该展示你是如何尝试的以及你遇到了什么错误。

标签: python inheritance pygame attributeerror python-3.5


【解决方案1】:

你需要像这样初始化 Character 类:

class Player(Characters):
def __init__(self,images,gameOver):
    Characters.__init__(self)

【讨论】:

    猜你喜欢
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 2020-09-11
    相关资源
    最近更新 更多