【发布时间】:2021-10-21 14:49:55
【问题描述】:
我正在使用 Python 上的 pygame 库开发游戏。我基本上定义了一个Character 类,Knight 类和Enemy 类将继承函数。由于两个子类使用相同的初始化函数,我在父类下定义了__init__() 函数。但是,我不完全理解它是如何工作的,并且出现以下错误:
TypeError: __init__() takes 1 positional argument but 3 were given
这是我的代码:
class Character():
def __init__(self, img, hitbox, vel, pos_x, pos_y):
self.img = img
self.hitbox = hitbox
self.vel = vel
self.pos_x = pos_x
self.pos_y = pos_y
def draw(self):
if self.right:
pygame.transform.flip(self.img, True, False)
win.blit(self.img, (self.pos_x, self.pos_y))
class Knight(Character):
def __init__(self):
Character.__init__(self)
def move(self):
if self.right:
if self.x + self.vel < win_width:
self.x += self.vel
if self.left:
if self.x - self.vel > 0:
self.x -= self.vel
main_plr = Knight("img", (19, 20), 5, 30, 20)
【问题讨论】:
-
你也可以把
__init__从骑士类中删除,因为它不做任何自己的初始化 -
阅读rhettinger.wordpress.com/2011/05/26/super-considered-super,了解如何定义
__init__,避免重复并与多重继承相得益彰。
标签: python oop inheritance