翼度科技»论坛 编程开发 python 查看内容

Python教程:方法重载

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
方法重载在Python中起着关键作用。方法有时接受零参数,有时接受一个或多个参数。
当我们以不同的方式调用同一个方法时,这就被称为方法重载。Python不像其他语言那样默认支持重载方法。
在Python中,两个或多个方法不能有相同的名字,因为方法重载允许我们使同一个操作符具有不同的含义。让我们详细讨论一下方法重载。
如果同一个类中的两个或多个方法采取不同的参数,它们可能有相同的名字。方法重载的特性允许同一个操作符有多种解释。
重载是指一个方法或操作符可以在同一名称下执行许多功能。
现在,让我们用一个基本的例子来讨论方法重载,在这个例子中,我们用同一个参数执行两个不同的事情。
例子:
  1. class methodOverload:
  2.     def MethodHi (self, user=None):
  3.         if user is not None:
  4.             print('Hello ' + user)
  5.         else:
  6.             print('Hello')
  7. MethodObj = methodOverload()
  8. MethodObj.MethodHi()
  9. MethodObj.MethodHi('Hasnain')
复制代码
输出:

正如你在这个例子中所看到的,我们创建了一个类methodOverload ,在这个类中我们定义了方法MethodHi ,这个方法将在有名字和没有名字的情况下向用户打招呼。在该类之后,我们使用该类创建了一个对象实例,并在有参数和无参数的情况下调用它。
这种用不同参数加载函数的方式被称为方法重载。现在,让我们讨论一下在我们的Python程序中使用方法重载的优势。
优点

在Python程序中使用方法重载有很多优点。其中一些如下:

  • 方法重载减少了程序的复杂性、函数或方法。它使用户可以在没有参数、只有一个参数或有多个参数的情况下简单地使用它。
  • 方法重载提高了代码质量,使其高效,并涵盖了大部分的用例,使我们的应用程序获得成功。
  • 方法重载增加了程序的可重用性,并使其易于使用。
现在,让我们通过一些方法重载的例子,我们将涵盖方法重载的不同方面。当我们制作相同的函数,并希望以不同的方式工作时,我们可以使用方法重载。
在同一个方法中使用不同的数据类型

在我们的第一个例子中,我们将制作一个类addition ,并使用不同的数据类型,用同一个方法执行两个任务。当数据类型为整数时,程序会进行检查,那么答案将是数字的加法。
如果数据类型是字符串,答案将是字符串的串联。我们将使用一个for 循环,通过参数并检查所有参数。
如果它们是整数,它们就被加起来。如果它们是字符串,它们将被合并,如下图所示。
例子:
  1. def addition(datatype, *args):
  2.     if datatype =='int':
  3.         result = 0
  4.         for x in args:
  5.             result = result + x
  6.         print(result)
  7.     if datatype =='str':
  8.         result = []
  9.         for x in args:
  10.             result.append(x)
  11.         print(result[0], result[1])
  12. addition('int',7, 11)
  13. addition('str', 'Hello', 'python')
复制代码
输出:

在上面的例子中,当我们提供整数作为数据类型与数字相加时,我们收到的是数字的相加。但是当我们把字符串作为数据类型,并传递字符串时,同一个方法将字符串连接起来并显示结果。
多调度装饰器

现在,让我们来看看另一个有点棘手的例子。在这个例子中,我们将使用有效的方式来执行方法重载。
我们需要使用下面的命令来安装多重调度装饰器。
  1. pip install multipledispatch
复制代码
安装后,我们将把它导入我们的程序中。它派发了三个整数和三个浮点数,并显示了以下结果。
例子:
  1. from multipledispatch import dispatch
  2. @dispatch(int,int,int)
  3. def multiply(oneInt,twoInt,threeInt):
  4.     ans = oneInt * twoInt * threeInt
  5.     print(ans);
  6. #Python小白学习交流群:725638078   
  7. @dispatch(float,float,float)
  8. def multiply(oneInt,twoInt,threeInt):
  9.     ans = oneInt * twoInt * threeInt
  10.     print(ans);
  11. multiply(3,7,8)
  12. multiply(3.6,5.9,9.9)
复制代码
输出:

正如你在上面的例子中所看到的,我们可以使用多个派发装饰器来发送不同的数据类型,并对我们想使用的所有数据类型使用相同的方法来获得结果。

来源:https://www.cnblogs.com/djdjdj123/p/17655294.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具