Python super() 函数

17 Mar 2025 | 4 分钟阅读

众所周知,Python 是一种面向对象的编程语言。因此,Python 遵循 OOP 的所有概念,其中之一就是继承。

在使用继承概念时,我们可以使用继承或子类中的 super() 函数来引用父类。我们在子类中使用的 super() 函数返回一个临时创建的超类对象,允许我们访问存在于子类中的所有方法。

super() 函数的优点

使用子类中的 super() 函数有以下优点:

  • 在使用 super() 函数时,我们不需要记住父类的名称。因为我们不必指定父类的名称即可访问其中存在的方法。
  • 我们可以在单继承和多继承中使用 super() 函数。
  • Python 中的 super() 函数实现了代码重用和模块化,因为我们无需一次又一次地重写整个函数。
  • Python 中的 super() 函数被称为动态函数,正如我们所知,Python 是一种动态类型编程语言。

使用 super() 函数的限制

要在 Python 程序中使用 super() 函数,必须遵循以下三个限制:

  • 在 super() 函数中给出的参数以及我们调用的函数中的参数必须匹配。
  • 在我们使用它之后,我们正在使用的方法的每个出现都必须包含 super() 关键字。
  • 我们必须指定由 super() 函数引用的类及其中的方法。

现在,正如我们所知,我们可以在 Python 的两种继承类型中使用 super() 函数,即单继承和多继承。因此,我们将分别并通过示例来学习如何在两种继承中使用 super() 函数。

在 Python 中使用单继承的 super() 函数

在此示例中,我们将使用动物作为 单继承 示例的参考。

猫、马、牛、狗等都属于 animalia 类。它们都具有一些共同的特征。

  • 它们都是宠物动物。
  • 它们都有四条腿和一条尾巴。
  • 作为 animalia 类的一部分,它们也都是哺乳动物。

所以,我们可以说 cats 类、horses 类和 dogs 类是 animalia 类的子类。这是一个单继承的例子,因为所有子类(cats 类、horses 类和 dogs 类)都只继承自一个父类,即 animalia 类。现在,请看下面的程序。

示例 -

输出

The given animal is a mammal type.
The given animal is a domestic animal type.
The given animal has four legs and a tail.

说明

在上面的代码中,我们将 animalia 定义为父类,并从中继承了 domestic、tail & legs 和 mammal 类。之后,我们定义了 cat、horse 和 dog 类并在其中使用了 super 函数。借助这些类中的 super() 函数,我们访问了 cat、horse 和 dog 类中 animalia 类的方法。

在 Python 中使用多重继承的 super() 函数

在此示例中,我们将使用一个父类,即 mammal 类。然后,我们将从 mammal 类继承 'Can Fly' 和 'Can Swim' 类。

这些类将表示给定的哺乳动物是否能飞或能游。之后,我们将定义一个 animal 类,它将继承自 'Can Fly' 和 'Can Swim' 类,并返回我们给定的动物是否具有指定的特征。

所以,我们可以看到我们这里使用的 animal 类是从多个基类继承的,因此,它是 Python 中多重继承的一个例子。现在,请看下面的程序。

示例

输出

Cat is not capable of flying
Cat is not capable of swimming
Cat Is a mammal of animalia class

说明

在上面的代码中,我们将 mammal 定义为父类。之后,我们从 mammal 类继承了 can fly 和 can swim 类。我们借助 super() 函数在 animalia 类中使用了 can swim 和 can fly 这两个类的所有方法。animalia 类继承自 can swim 和 can fly 类。