Python 我有一个争论的问题,我可以';我不明白为什么?

Python 我有一个争论的问题,我可以';我不明白为什么?,python,class,pygame,Python,Class,Pygame,我正在和一些班级合作,试图写一个小游戏。我创建了一个在屏幕上移动对象的方法,并添加了键绑定 我预计正方形会移动,但它只是给出了一个错误。你能解释一下为什么它会给我这个错误吗 代码: 我收到这个错误: Traceback (most recent call last): File "Pygame.py", line 73, in <module> if key_press[pygame.K_RIGHT]:Rectangle.move_right() TypeError:

我正在和一些班级合作,试图写一个小游戏。我创建了一个在屏幕上移动对象的方法,并添加了键绑定

我预计正方形会移动,但它只是给出了一个错误。你能解释一下为什么它会给我这个错误吗

代码:

我收到这个错误:

 Traceback (most recent call last):
  File "Pygame.py", line 73, in <module>
    if key_press[pygame.K_RIGHT]:Rectangle.move_right()
TypeError: move_right() takes 0 positional arguments but 1 was given

回溯(最近一次呼叫最后一次):
文件“Pygame.py”,第73行,在
如果按[pygame.K_RIGHT]:Rectangle.move_RIGHT()
TypeError:move_right()接受0个位置参数,但给出了1个

我不知道为什么

矩形是一个类,向右移动是该类的一个方法。因此,您必须将其自身作为参数传递。

所有这些方法

def move_up():

def move_down():

def move_right():

def move_left():
实际上是类rectangle的方法,因此所有这些方法都需要“self”参数,您必须编辑它们以:

def move_up(self):
    self.y = self.y + 3

def move_down(self):
    self.y = self.y - 3

def move_right(self):
    self.x = self.x + 3

def move_left(self):
    self.x = left.x - 3

您需要将
self
作为参数传递给
move_right()
,因此
move_right(self)
需要注意的是,类通常以大写字母开头:
CamelCase
,引用对象的名称将以小写字母开头,并用下划线分隔:
snake_case
。因此,
Rectangle
Rectangle
应该交换。而且
shape
应该是
shape
。看见
def move_up(self):
    self.y = self.y + 3

def move_down(self):
    self.y = self.y - 3

def move_right(self):
    self.x = self.x + 3

def move_left(self):
    self.x = left.x - 3