为什么在python中self被用作某个方法的第二个参数?

为什么在python中self被用作某个方法的第二个参数?,python,python-3.x,Python,Python 3.x,我不熟悉Python中的面向对象编程。我一直在尝试学习python的pygame模块 我已经看到,在OOP中,我们总是将self构造函数作为第一个参数传递,以便将对象绑定到方法 但在这里: class Player(pygame.sprite.Sprite): def __init__(self): super(Player, self).__init__() self.surf = pygame.Surface((75, 25))

我不熟悉Python中的面向对象编程。我一直在尝试学习python的pygame模块

我已经看到,在OOP中,我们总是将
self
构造函数作为第一个参数传递,以便将对象绑定到方法

但在这里:

class Player(pygame.sprite.Sprite):
      def __init__(self):
          super(Player, self).__init__()
          self.surf = pygame.Surface((75, 25))
          self.surf.fill((255, 255, 255))
          self.rect = self.surf.get_rect()`

在第三行中,您可以看到他们使用super方法调用sprite模块的
\uuuu init\uuuu
方法。但是为什么在这个场景中,
self
被用作第二个参数而不是第一个参数呢?

这就是
super
的工作原理

请参见此处的文档:

第一个参数是类类型-在您的例子中是
Player
,第二个参数是您正在处理的对象-通常是
self
,即类的当前实例

请注意,您不需要编写此代码,只需指定:

super().__init__()

在处理当前实例和当前类时也是一样。

你要问的是,为什么这个参数在一个函数中处于第二个位置,而在另一个函数中处于第一个位置,这毫无意义。
super().__init__()