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

623 阅读5分钟

首页>数据科学> 《Python中方法重载完整指南》(含示例)

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

目录

什么是方法重载?

在面向对象的程序设计中,方法重载用于这样的场景:对于一个特定的对象,根据项目要求,可以用多种方式调用一个特定的方法。

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

什么是方法重载?

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

方法重写的例子

X类。

def method1(self):

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

def method2(self):

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

类Y(X)。

def method1(self):

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

def method3(self):

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

obj = Y()

obj.method1()

输出。

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

method1被类Y重载了。

Python中的方法重载

在Python中方法重载的问题是,Python默认不支持它。然而,有一些变通方法可以做到这一点。

问题所在

让我们来看看下面的代码。

def add(a, b):

s = a + b

print(s)

def add(a, b, c):

s = a + b + c

print(s)

# add(8, 9)显示错误

add(8, 9, 2)

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

在Python中,我们有两种不同的方法可以克服这个方法重载的问题。

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

我们可以看到一个参数来了解数据类型,同时还有*args,允许在Python中向一个方法传递可变数量的参数。然后我们可以使用if语句来控制方法如何根据输入的情况进行操作。

代码。

def add(dt, *args):

如果dt =='int':

s = 0

如果dt =='str':

s = "

for x in args:

s = s + x

print(s)

add('int', 11, 9)

add("str", "Hello,", "How are you?" )

输出。

20

你好,你好吗?

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

2:使用多重调度装饰器 (更有效的方法)

多重调度装饰器不是一个变通的方法,它的工作原理和它应该的完全一样。你可以使用 pip3 来安装它。

pip3安装多重分配器

代码。

from multiple dispatch import dispatch

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

def add(n1,n2):

s = n1 + n2

print(s)

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

def add(n1,n2,n3):

s = n1 + n2 + n3

print(s)

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

def add(n1,n2,n3):

s = n1 + n2 + n3

print(s

add(5,2)

add(6,1,4)

加(3.4,1.2,5.6)

输出。

7

11

10.2

在执行时,调度器会产生一个新的对象,存储方法的不同实现,并根据调用方法时传递的参数类型和数量来决定选择哪种方法。这样一来,Python中的重载方法就更有效率了。

结论

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

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

在Python中,有两种函数:内置函数和用户定义的函数。Print()和len()是内置函数的例子。python中的用户定义函数是我们可以自己定义的函数,可以在一个典型的程序中不止一次地完成一个特定的任务。方法和函数一样,只是方法属于一个类,只能在一个对象上调用。(语法:obj.method())

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

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

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

每个人都有自己的学习进度。虽然,对于一个没有编程经验的初学者来说,你需要接近6-7个月的时间来巩固你的基础知识。之后,这又取决于你的练习程度和要做的项目。如果你遵循一个在线认证,你应该能够在一年左右掌握它。