如何在 python 中使用两个不同的可变参数创建 class 的实例?
how to create an instance of class with two different variable parameters in python?
这段代码有两个class,看起来classPlayer()
和Block()
的代码是一样的,我想把代码最小化,所以我不要重复那样的咒语,方法是 class、 Player()
是 Block()
[=25 的实例=], 怎么样?
class Block(pygame.sprite.Sprite):
def __init__(self, color, width, height):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
class Player(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
self.image = pygame.Surface([20, 15])
self.image.fill(BLUE)
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
self.change_x = 0
self.change_y = 0
def changespeed(self, x, y):
self.change_x += x
self.change_y += y
def update(self):
self.rect.x += self.change_x
self.rect.y += self.change_y
经过各位大侠的解答,代码如下:
class Block(pygame.sprite.Sprite):
def __init__(self, color, width, height):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
class Player(Block):
def __init__(self, color, width, height, x, y):
Block.__init__(self, color, width, height)
self.rect.x = x
self.rect.y = y
self.change_x = 0
self.change_y = 0
def changespeed(self, x, y):
self.change_x += x
self.change_y += y
def update(self):
self.rect.x += self.change_x
self.rect.y += self.change_y
这个代码是真的吗?当我 运行 程序时,它工作。
加个中间Class:
class Middle(pygame.sprite.Sprite):
super().__init__()
self.image = pygame.Surface([20, 15])
self.image.fill(BLUE)
self.rect = self.image.get_rect()
然后 class 格挡和 class 玩家从中间继承 class
就像 Player 和 Block inherit from pygame.sprite.Sprite
一样,您可以让 Player inherit from Block:
class Player(Block):
然后,调用super().__init__()
来使用Block的构造函数(反过来也会调用pygame.sprite.Sprite
的构造函数):
class Player(Block):
def __init__(self, x, y):
super().__init__()
然后在此之下,添加所有特定于 Player 的代码。
这段代码有两个class,看起来classPlayer()
和Block()
的代码是一样的,我想把代码最小化,所以我不要重复那样的咒语,方法是 class、 Player()
是 Block()
[=25 的实例=], 怎么样?
class Block(pygame.sprite.Sprite):
def __init__(self, color, width, height):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
class Player(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
self.image = pygame.Surface([20, 15])
self.image.fill(BLUE)
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
self.change_x = 0
self.change_y = 0
def changespeed(self, x, y):
self.change_x += x
self.change_y += y
def update(self):
self.rect.x += self.change_x
self.rect.y += self.change_y
经过各位大侠的解答,代码如下:
class Block(pygame.sprite.Sprite):
def __init__(self, color, width, height):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
class Player(Block):
def __init__(self, color, width, height, x, y):
Block.__init__(self, color, width, height)
self.rect.x = x
self.rect.y = y
self.change_x = 0
self.change_y = 0
def changespeed(self, x, y):
self.change_x += x
self.change_y += y
def update(self):
self.rect.x += self.change_x
self.rect.y += self.change_y
这个代码是真的吗?当我 运行 程序时,它工作。
加个中间Class:
class Middle(pygame.sprite.Sprite):
super().__init__()
self.image = pygame.Surface([20, 15])
self.image.fill(BLUE)
self.rect = self.image.get_rect()
然后 class 格挡和 class 玩家从中间继承 class
就像 Player 和 Block inherit from pygame.sprite.Sprite
一样,您可以让 Player inherit from Block:
class Player(Block):
然后,调用super().__init__()
来使用Block的构造函数(反过来也会调用pygame.sprite.Sprite
的构造函数):
class Player(Block):
def __init__(self, x, y):
super().__init__()
然后在此之下,添加所有特定于 Player 的代码。