python类中的重载方法[重复]

Posted

技术标签:

【中文标题】python类中的重载方法[重复]【英文标题】:overloading methods in python class [duplicate] 【发布时间】:2019-02-08 11:37:03 【问题描述】:

我尝试在方法重载中添加 numpy 数组,但出现 TypeError: add() missing 1 required positional argument: 'n3' 之类的错误

import numpy as np
class addition:
    def add(self,n1,n2):
        return n1+n2
    def add(self,n1,n2,n3):
        return n1+n2+n3
s=np.array([[1,2,3],[3,4,4]])
s1=np.array([[1.0,2,3],[3,4,4]])
s3=np.array([[1.0,2.4,3.7],[3,4,4]])
c=addition()
print(c.add(1,2))

【问题讨论】:

Python 中不存在方法重载之类的东西。只有第二个版本真正获胜。 查看副本,了解如何定义可以采用可变数量参数的方法。 @MartijnPieters 不知道为什么,但只有 dup 中的第 5 个答案(通过投票)提到了明星论点。 @DeepSpace:这只是接受可变数量参数的一种方式。 *args 仅在您想接受 任意数量的参数(从 0 到 sys.maxsize)时有用。这并不总是正确的选择。 【参考方案1】:

Python 不支持重载。实际方法将是最新定义的方法,正如您收到的错误所暗示的那样。

改为使用*args:

def add(self, *args):
    return sum(args)

【讨论】:

以上是关于python类中的重载方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python-重载

Python面向对象之运算符重载

python 装饰器调用其他类中的方法

python 类中的函数

Java与Python中的类方法调用(一般OO问题)[重复]

在 python 类中重载 [] 运算符以引用 numpy.array 数据成员