首页 > 解决方案 > TypeError:draw()缺少1个必需的位置参数:'win'

问题描述

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在程序的顶部定义。

标签: python-3.xpygame

解决方案


draw()需要在rocket实例上调用,而不是类本身:

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

在上面代码的第一行中,您正在创建火箭类的实例,在第二行中,您正在调用该draw()实例上的方法,其中实例本身作为self参数被隐式传递。

在您的示例代码中,您从这一行得到一个错误,rocket.draw(win)因为由于您调用draw()的是类本身而不是实例,所以实例没有作为self参数传递,而是将win参数传递给self参数,一切都失败了up 因为现在没有win通过预期的参数。


推荐阅读