Ошибка типа: draw () отсутствует 1 обязательный позиционный аргумент: 'win' - PullRequest
3 голосов
/ 17 октября 2019
class rocket(object):
def __init__(self, x, y):
    self.image = pygame.image.load('sprites/spaceship.png')
    self.x = x
    self.y = y
    self.width = 72
    self.height = 72
    self.speed = 5
    self.angle = 0

def draw(self, win):
    win.blit(char, (self.x,self.y))

def updateGameWindow():
win.blit(bg, (0,0))
rocket.draw(win)
pygame.display.update()

По какой-то причине, когда я запускаю эту программу, я получаю сообщение об ошибке, что rocket.draw(win) отсутствует аргумент 'win', когда он явно присутствует.

win определено ввершина программы.

1 Ответ

2 голосов
/ 17 октября 2019

draw() необходимо вызывать для экземпляра rocket, а не для самого класса:

rocket_instance = rocket(some_x, some_y)
rocket_instance.draw(win)

В первой строке кода выше вы создаете экземпляр класса ракеты,а во второй строке вы вызываете метод draw() в том экземпляре, где сам экземпляр передается неявно как аргумент self.

В вашем примере кода вы получаете сообщение об ошибке из этой строки rocket.draw(win), поскольку, поскольку вы вызываете draw() для самого класса вместо экземпляра, экземпляр не передается в качестве аргумента self, а вместо этого аргумент win передается для параметра self, и всевзрывается, потому что теперь нет ожидаемого аргумента win.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...