Python 中方法重载的完整指南(附示例)

已发表: 2022-04-23

重载是函数、方法或运算符在将不同参数传递给相同的参数时以不同方式工作的能力。 Python中的方法重载或函数重载有常用的术语。 重载的一些主要优点是您可以以多种方式使用一种方法,这有助于您在与团队合作时保持代码更简洁并消除复杂性。

目录

什么是方法重载?

在面向对象的编程中,方法重载用于针对特定对象,可以根据项目需求以多种方式调用特定方法的场景。

Python 中的方法重载示例将在本文后面详细讨论。

什么是方法覆盖?

Python 中的方法覆盖类似于方法重载,只是方法覆盖发生在子类和超类之间。 它具有与何时调用方法相同的参数。 然而,由于某些功能被超类覆盖,它们的行为有所不同。

方法覆盖示例

X 类:

定义方法1(自我):

print('我是 X 班的第一个特征')

定义方法2(自我):

print('我是 X 班的第二个特征')

Y(X) 类:

定义方法1(自我):

print('我是 Y 类中 X 类的修改后的第一个特征')

定义方法3(自我):

print('我是 Y 类的一个特征')

obj = Y()

obj.method1()

输出:

我是 Y 类中 X 类的修改后的第一个特征

method1 被类 Y 覆盖。

在 upGrad 在线学习数据科学课程

Python中的方法重载

Python 中方法重载的问题在于 Python 默认不支持它。 但是,有一些解决方法可以做到这一点。

问题

让我们考虑以下代码:

定义添加(a,b):

s = a + b

印刷)

定义添加(a,b,c):

s = a + b + c

印刷)

# add(8, 9) 显示错误

添加(8, 9, 2)

乍一看,代码看起来不错,但是当您尝试使用两个参数执行它时,Python 会显示错误,因为在 Python 中,当您有多个同名但参数数量不同的方法时,只有可以使用最新定义的方法。

有两种不同的方法可以解决 Python 中方法重载的问题。

1:使用相同的方法根据参数的数据类型不同

我们可以看到一个参数来了解数据类型,以及允许将可变数量的参数传递给 Python 中的方法的 *args。 然后,我们可以使用 if 语句来控制方法如何根据输入进行行为。

代码:

def add(dt, *args):

如果 dt =='int':

s = 0

如果 dt =='str':

s = ”

对于 args 中的 x:

s = s + x

印刷)

添加('int', 11, 9)

添加(“str”、“你好”、“你好吗?”)

输出:

20

你好吗?

这是在 Python 中实现方法重载的第一个解决方法。

探索我们的热门数据科学课程

IIITB 数据科学高级管理研究生课程 商业决策数据科学专业证书课程 亚利桑那大学数据科学理学硕士
IIITB 数据科学高级证书课程 马里兰大学数据科学和商业分析专业证书课程 查看所有数据科学课程

2:使用Multiple Dispatch Decorator(更有效的方式)

Multiple Dispatch Decorator 不是一种解决方法,它的工作方式与预期的完全一样。 您可以使用 pip3 安装它。

pip3 安装多个调度

代码:

from multiple dispatch import dispatch

@dispatch(int,int) # 用于 2 个整数参数

定义添加(n1,n2):

s = n1 + n2

印刷)

@dispatch(int,int,int) # 用于 3 个整数参数

定义添加(n1,n2,n3):

s = n1 + n2 + n3

印刷)

@dispatch(float,float,float) # 用于浮点参数

定义添加(n1,n2,n3):

s = n1 + n2 + n3

印刷

添加(5,2)

添加(6,1,4)

添加(3.4,1.2,5.6)

输出:

7

11

10.2

执行时,调度程序创建一个新对象,该对象存储方法的不同实现,并根据调用方法时传递的参数的类型和数量决定选择的方法。 这种在 Python 中重载的方法更有效。

阅读我们热门的数据科学文章

数据科学职业道路:综合职业指南 数据科学职业发展:工作的未来就在这里 为什么数据科学很重要? 数据科学为企业带来价值的 8 种方式
数据科学对管理者的相关性 每个数据科学家都应该拥有的终极数据科学备忘单 成为数据科学家的 6 大理由
数据科学家生活中的一天:他们做什么? 神话破灭:数据科学不需要编码 商业智能与数据科学:有什么区别?

结论

如果你想进入数据科学领域,Python 是一个很好的第一步。 要深入研究该主题,您可以查看高级在线认证课程,例如IIIT-Bangalore 与upGrad联合举办的数据科学高管课程 该计划涵盖了该主题的重要方面,并为想要进一步提高技能的爱好者提供了许多额外的好处,如工作帮助、1:1 指导、在线支持、现场讲座和可选的附加模块。

Python中的函数和方法有什么区别?

在 Python 中,有两种函数:内置函数和用户定义函数。 print() 和 len() 是内置函数的示例。 python中的用户定义函数是我们可以定义自己以在典型程序中多次执行特定任务的函数。 方法就像一个函数,只是方法属于一个类并且只能在一个对象上调用。 (语法:obj.method())

我如何在 Python 和 R 之间进行选择?

Python 和 R 是用于数据科学的两种顶级语言。 虽然使用什么取决于几个因素,例如您的目标公司、项目类型、客户要求等,但通常,如果您是编程初学者,在构建大型应用程序的工程环境中工作,Python是一个很好的选择。 另一方面,如果您有编程经验并希望快速运行数据分析任务并使用漂亮的图形可视化您的数据以在统计上做出更好的决策,那么 R 是您的最佳选择。

掌握数据科学需要多长时间?

每个人都有自己的学习节奏。 虽然,对于一个没有编程经验的初学者来说,你需要将近 6-7 个月的时间来巩固你的基础知识。 发布那个,这又取决于你练习了多少以及要从事的项目。 如果您遵循在线认证,您应该能够在大约一年内掌握它。