Python中的方法覆盖:它是什么,怎么做?

已发表: 2021-09-28

Python 是一种高级的通用语言,是计算机编程爱好者必须学习的语言。 类似于其他广泛使用的计算机语言,如 JAVA、C++、Golang、Ruby 等。Python 也是一种面向对象的编程语言,其中编码依赖于类和对象。 该概念允许开发人员构建简单、可重用的代码,然后表示单个对象。 OOP 语言提供了几个有用的特性,其中之一是方法覆盖。

在本文中,我们将了解继承的概念,以探索 Python 中的方法覆盖。 让我们从了解什么是类开始。

目录

什么是类?

类是面向对象编程范式中的一个特性或实例。 它是程序内的扩展程序编码模板。 类帮助程序员在创建时输入每个对象(数组、字符串、变量等)的初始数据。 它们还使我们能够定义类的特征并确定它们将如何处理数据或提供输入。 程序中定义的父类或超类下有子类或子类。

什么是继承? 它有什么好处?

面向对象编程中的继承是一种允许类的特性被继承到其他类或子类的属性。 这有助于防止数据冗余,更好地编译程序,并限制出错的范围。

类从其他类派生或继承特征的这种能力称为继承。 其特征和属性用于派生子类的类称为父类。

以下是继承的好处:

  • 继承允许用户很好地表示实时关系。
  • 它允许重复使用代码。 它还允许程序员为类提供更多特性。
  • 它允许过渡。 假设 Q 类从 W 类派生特征,那么 Q 的子类将自动从 W 类继承。

继承类型

继承分为以下三种类型;

1. 单一继承

在单继承中,派生类可以从单个父类继承特性。 它使代码可以重用,也可以添加新功能。

2.多重继承

它是指将多个父类的特性转移到一个子类。 在这里,基类的特性被自动继承到子类中。

3.多级继承

当父类和子类的特性进一步继承到另一个派生类中时,称为多级继承。

什么是 Python 中的方法覆盖?

方法覆盖是面向对象编程语言的一个特性,其中子类或子类可以为程序提供已在父类或超类中定义的数据的特定特征或特定实现过程。

当在子类中输入与父类相同的返回值、参数或名称时,子类中的实现方法将覆盖父类中提到的方法。 这称为方法覆盖。

它的执行取决于用于调用该方法的数据,而不是父类中已经提供的参考数据。 如果父类的对象用于调用特定于程序的实现方法,则调用写在父类中的方法的版本。 另一方面,如果使用子类的对象来调用该方法,则将根据子类中提到的特性执行。 如果您是初学者并且想获得数据科学方面的专业知识,请查看我们的数据科学课程。

方法覆盖的特点

本节将探讨 python 中的方法覆盖提供的显着特性:

  • 方法覆盖允许在 Python 中使用具有相同名称或签名的函数和方法。
  • 方法重载是运行时多态的一个例子。
  • 在方法覆盖中,总是需要使用继承的特性。
  • 方法重载是在父类和子类之间进行的。
  • 它用于更改现有方法的行为和实现。
  • 方法覆盖总是需要至少两个类。

理解方法覆盖:多级和多级继承

多级和多级继承是大多数面向对象编程语言提供的两种类型的继承。 在本节中,我们将了解如何在各种多级继承中使用方法覆盖:

1.多重继承

在这种类或对象的继承中,一个子类继承了多个父类或基类的特性和特性。 例如,有三个不同的父类——class.1、class.2、class.3,还有class.a,它是执行多重继承特性的子类。 class.a 将包含从所有三个基类继承的特性。

这是一个示例程序:

# 定义父类 1

类Parent1():

# 家长的展示方式

def 显示(自我):

打印(“在父 1 内”)

# 定义父类 2

类Parent2():

# 家长的展示方式

def 显示(自我):

print(“在 Parent2 内部”)

# 定义子类

类子(父 1,父 2):

# 孩子的表演方法

def 显示(自我):

打印(“内部孩子”)

# 驱动程序代码

obj = 孩子()

obj.show()

obj.display()

输出:

里面的孩子

Parent2 内部

2. 多级继承

在这种类或对象的继承中,子类是直接从基类继承而来的,已经具有父类的特征。 它基本上就像父子或祖孙关系。 子类的特征是其父类所独有的。 例如,有一个父类名为class.Q,在class.Q的扩展中形成一个子类。 在这里,子类可以作为另一个子类的基类。

这是一个示例程序:

类父():

def 显示(自我):

打印(“内部父级”)

班级儿童(父母):

# 孩子的表演方法

def 显示(自我):

打印(“内部孩子”)

类 GrandChild(儿童):

# 孩子的表演方法

def 显示(自我):

打印(“在孙子里面”)

# 驱动代码

g = 孙子()

g.show()

g.display()

输出

孙子里面

内部父级

在重写方法中调用基类方法

有一种方法可以在重写的方法之间调用父类方法。 它可以通过使用以下过程来完成:

  • 使用类名

在子类中重写方法中写入类名方法可以调用父类中提供的方法。

  • 使用 super() 函数

Python 的编程语言提供了一个叫做 super() 的函数,专门用来引用父类。

结论

方法覆盖是 Python 语言最重要的特性之一。 该属性在编程数据科学应用程序中得到广泛使用,并允许进行紧凑和高效的数据分析。 方法覆盖还使代码的编译和重新检查更容易。 使用此功能有一些先决条件:了解类和继承的基本概念。

如果您想深入了解 Python 中的方法覆盖,我们建议您攻读为期 18 个月的数据科学理学硕士课程 upGrad 提供来自 IIIT 班加罗尔和利物浦约翰摩尔大学的这门课程。 该课程教授您统计、使用 Python 进行预测分析、机器学习、数据可视化、大数据分析等技能。 对 Python 概念有深入了解的学生可以很好地应对深度学习、自然语言处理、商业分析和数据工程等学科。

今天就联系我们,开始您的学习之旅吧!

区分重载和重载。

覆盖和重载之间的主要区别在于,覆盖发生在相同的方法或相同的签名之间,而重载发生在相同的类方法之间。

1. 方法重载体现了编译时多态性,而方法重载体现了运行时多态性。
2. Python中不能执行方法重载,而在某些条件下可以执行方法覆盖。

方法覆盖的特点是什么?

以下是方法覆盖的特点:

1. 它体现了运行时多态性。
2. 它建立了父类和子类之间的链接。
3. 由于它至少连接一个类,我们需要使用继承的特性。
4. 方法覆盖可帮助您为多个函数使用一个名称。

我们使用方法覆盖在派生类中实现父类的方法。

有哪些不同类型的继承? 是否可以在 Python 中覆盖私有方法?

首先,方法覆盖使用多级和多重继承。

在多级继承中,子类继承自包含父类特征的基类。 但是在多重继承的情况下,一个子类显示出多个父类或基类的特征。

私有方法覆盖不能在 Java 中发生,但在 Python 中使用称为“名称修改”的过程是可行的。