如何在 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 的代码。