python类中的重载方法

python类中的重载方法,python,class,numpy,overloading,Python,Class,Numpy,Overloading,我试图在方法重载中添加numpy数组,但出现了类似TypeError的错误:add()缺少1个必需的位置参数:“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

我试图在方法重载中添加numpy数组,但出现了类似TypeError的错误:add()缺少1个必需的位置参数:“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不支持重载。实际的方法将是最新定义的方法,正如您得到的错误所表明的那样

相反,请使用
*args

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

Python中没有方法重载这样的东西。只有第二个版本真正获胜。请参阅副本,了解如何定义可以接受可变数量参数的方法。@MartijnPieters不确定原因,但dup中只有第五个答案(通过向上投票)提到了星形参数。@DeepSpace:这只是接受可变数量参数的一种方法
*args
仅在您想要接受从0到
sys.maxsize
的任意数量的参数时才有用。这并不总是正确的选择。