Python 方法重载
方法重载是面向对象编程的一个重要特性。Java、C++、C#语言都支持方法重载,但是在Python中不能进行方法重载。
当一个类中有一个方法的名称定义了不止一次,但是参数类型和/或返回类型不同,这就是方法重载的情况。Python不支持这种机制,如下面的代码所示 −
示例
输出
第一次使用三个参数调用add()方法成功。然而,使用类中定义的两个参数调用add()方法失败。
输出告诉你Python只考虑add()方法的最新定义,丢弃了早期的定义。
为了模拟方法重载,我们可以通过将方法参数的默认值定义为None来使用一个、两个或三个参数。
示例
它将产生以下结果 输出 −
通过这种解决方案,我们可以在Python类中实现方法重载。
Python的标准库没有其他关于实现方法重载的规定。然而,我们可以使用来自名为Multipledispatch的第三方模块的分发函数来实现这个目的。
首先,您需要安装Multipledispatch模块。
该模块使用@dispatch装饰器。它接受要传递给要进行重载的方法的参数数量。定义多个带有@dispatch装饰器的add()方法的副本,如下所示−
示例
输出
当您执行此代码时,将产生以下输出结果−