Как наследовать указанные c переменные из одного класса в другой класс? - PullRequest
1 голос
/ 10 февраля 2020

Я делаю игру в python, используя модуль pygame, и я буду sh наследовать одну указанную переменную c от одного класса к другому, но понятия не имею, как. Я пробовал super (), но это не сработало, однако, если я новичок, это может означать, что я сделал это неправильно, поэтому, пожалуйста, не обесценивайте это как возможность, если это работает.

Я перечислил, какая переменная I sh унаследована в приведенном ниже коде.

Ниже приведен мой соответствующий код:

Класс, который я хочу наследовать от:

class player():
    def __init__(self, x, y, width, height, walkCount):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.vel = 15
        self.lastDirection = "right" or "left" or "up" or "down" #<--- variable I want to inherit
        self.walkCount = walkCount

    def drawCharacter(self, window):
        dest = (self.x, self.y)
        if self.walkCount + 1 >= 30:
            self.walkCount = 0
        if self.lastDirection == "left":
            window.blit(protagL[0], dest)
        elif self.lastDirection == "right":
            window.blit(protagR[0], dest)
        elif self.lastDirection == "up":
            window.blit(protagU[0], dest)
        elif self.lastDirection == "down":
            window.blit(protagD[0], dest)

Класс, который я хочу получить в наследство:

class projectile(player):
    def __init__(self, x, y, direction, travelCount):
        self.x = x
        self.y = y
        self.direction = direction
        self.vel = 20 * direction
        self.travelCount = travelCount

    def drawBullet(self, window):
        dest = (self.x, self.y)
        if self.travelCount + 1 >= 15:
            self.walkCount = 0
        if lastDirection == "right" or "left": # <---  I Want to call lastDirection variable here
            if self.travelCount < 15:
                window.blit(bulletsP[self.travelCount//3], dest) #dest)
                self.travelCount += 1
                self.x += self.vel

Любая помощь будет принята с благодарностью, спасибо.

1 Ответ

2 голосов
/ 11 февраля 2020

Вы должны вызвать конструктор базового класса. См. super():

class projectile(player):
    def __init__(self, x, y, direction, travelCount):
        super().__init__(x, y, 10, 10, travelCount)
        # [...]

Обратите внимание, что аргументы для ширины и высоты неясны в вашем примере, поэтому я в качестве примера использовал (10, 10).

...