【发布时间】:2015-12-01 07:47:21
【问题描述】:
所以我一直在使用类和继承,根据我有限的理解,我收集到属性应该被继承。但是,下面的第一组代码会引发此错误:'AttributeError: type object 'Characters' has no attribute 'posX' with the following code:
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.Surface' object has no attribute '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 和**kwargs、super 方法和Parent.__init__(self, attr1, attr2,...),但它仍然会抛出相同的错误。是不是我做错了什么?
【问题讨论】:
标签: python class python-3.x inheritance pygame