为什么我们不需要将 self 包含在 super() 中?

Why do we not need to include self in super()?

为什么在super()关键字中,我们可以省略self? 如果我们不省略呢?

class A:
  def __init__(self, var1, var2):
    """
    some code
    """

class B(A):
  def __init__(self, varA, varB):
    super().__init__(varA, varB)
    """
    some code
    """
class Rectangle:
    def __init__(self, length, width):
    self.length = length
    self.width = width

    def area(self):
    return self.length * self.width

    def perimeter(self):
    return 2 * self.length + 2 * self.width

class Square(Rectangle):
    def __init__(self, length):
        super(Square, self).__init__(length, length)

在Python3中,super(Square, self)调用等同于无参super()调用。第一个参数指的是子类 Square,而第二个参数指的是一个 Square 对象,在本例中是 self。您也可以用其他 类 调用 super():

class Cube(Square):
def surface_area(self):
    face_area = super(Square, self).area()
    return face_area * 6

def volume(self):
    face_area = super(Square, self).area()
    return face_area * self.length

You can find more details here