Говорят, что позиционный аргумент отсутствует, но дается, что не так? - PullRequest
2 голосов
/ 19 сентября 2019

Я использую pygame и создал класс с именем Entity и подкласс Player.Класс Entity требует аргумент «pos», который всегда просто «pos», потому что значение для него создается в init.

class Entity(pygame.sprite.Sprite):
    def __init__(self, color, stype, pos, *groups):
        super().__init__(*groups)
        self.image = stype
        try:
            self.image.fill(color)
        except:
            pass
        self.image.convert()
        self.rect = self.image.get_rect(topleft=pos)

    def update(self, dt, events):
        pass

class Player(Entity):
    def __init__(self, platforms, pos, *groups):
        super().__init__((pygame.image.load("lemon.png")), pos)
        self.vel = pygame.Vector2((0, 0))
        self.onGround = False
        self.platforms = platforms
        self.speed = 8
        self.jump_strength = 10

Однако, когда я пытаюсь запустить код, он выдает мне эту ошибку:

Ошибка типа: init () отсутствует 1 обязательный позиционный аргумент: 'pos '

1 Ответ

4 голосов
/ 19 сентября 2019

Почему здесь передаются только два аргумента:

super().__init__((pygame.image.load("lemon.png")), pos)

Но для конструктора Entity требуется как минимум 3:

def __init__(self, color, stype, pos, *groups)

Я не знаю вашей проблемы, ноэто может быть решением:

super().__init__(color=None, stype=(pygame.image.load("lemon.png")), pos=pos)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...