Python如何在add magic方法上接受多个参数

时间:2017-02-22 21:36:12

标签: python

我试图玩弄运算符重载,我发现自己尝试了2个以上的参数。我如何实现它来接受任意数量的参数。

class Dividend:

    def __init__(self, amount):
        self.amount = amount

    def __add__(self, other_investment):
        return self.amount + other_investment.amount

investmentA = Dividend(150)
investmentB = Dividend(50)
investmentC = Dividend(25)

print(investmentA + investmentB) #200
print(investmentA + investmentB + investmentC) #error

1 个答案:

答案 0 :(得分:3)

问题不在于您的__add__方法不接受多个参数,问题是它不会返回Dividend。加法运算符始终是二元运算符,但在第一次加法后,您最终尝试将数字类型添加到Dividend而不是添加两个红利。您应该让__add__方法返回适当的类型,例如:

def __add__(self, other_investment):
    return Dividend(self.amount + other_investment.amount)