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类中的重载方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章