【问题标题】:overloading methods in python class [duplicate]python类中的重载方法[重复]
【发布时间】: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)时有用。这并不总是正确的选择。

标签: python class numpy overloading


【解决方案1】:

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

改为使用*args:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    相关资源
    最近更新 更多