如何创建3个类对象实例并通过运算符重载将它们添加到一起?

时间:2016-04-26 02:37:24

标签: python

我正在尝试将三个Dim类对象添加到一起。我只知道如何将1个Dim对象与另一个对象,但是给出的不仅仅是我不太确定。这就是我的意思。

Dim(1,1,1,1)+ Dim(1,1,1,1)+ Dim(1,1,1,1) - > 3.0(1,1,1)

def __add__(self,right):
    self.each_value = 0        
    if type(right) not in [int,float,Dimensional]:
        raise TypeError
    elif type(right) is Dimensional:
        if self.__len__() != right.__len__():
            raise DimensionError
        print("inside elif")
        return Dimensional(self.value + right.value,self.length,self.mass,self.time)

    elif (type(right) in [int,float] and type(self) is Dimensional):
        if (self.length > 0 or self.mass > 0 or self.time > 0):
            raise DimensionError
        else:
            return Dimensional(self.value + right,self.length,self.mass,self.time)
    elif type(self) in [int,float] and type(right) is Dimensional:
        raise DimensionError


    return Dimensional(self.each_value,self.length,self.mass,self.time)

def __radd__(self,left):
    return self + left

1 个答案:

答案 0 :(得分:1)

您需要按照语言对简单添加的方式对待它。它会将前两个项目一起添加并产生一个中间结果,然后将中间结果添加到您添加的剩余项目中。这将导致添加被调用两次。一次添加前两项,第二次将第一次调用的结果添加到第三项。

更清楚。 Add是一个运算符,它接受两个操作数并添加它们。重载它只会允许将项目添加到要添加到的项目项目中。