[英]Python/Pygame errors in class inheritance
因此,我一直在使用類和繼承,並且由於我的有限理解,我收集到應該繼承屬性的信息。 但是,下面的第一組代碼將引發以下錯誤:'AttributeError:類型對象'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.Surface'對象沒有屬性'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,...)
,但是它仍然拋出相同的錯誤。 我做錯了什么嗎?
也許我錯了(我是新手...!),但是:您是否不應該在class語句之后縮進構造函數和其他class方法? 這只是轉錄錯誤嗎? 我主要指的是Pyhton 2.7,也許在3.x版本中已經改變了...
實例變量是繼承的,因此只需通過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,如您所見,B實例中的self.foo返回了繼承的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.