我正在尝试将三个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
答案 0 :(得分:1)
您需要按照语言对简单添加的方式对待它。它会将前两个项目一起添加并产生一个中间结果,然后将中间结果添加到您添加的剩余项目中。这将导致添加被调用两次。一次添加前两项,第二次将第一次调用的结果添加到第三项。
更清楚。 Add是一个运算符,它接受两个操作数并添加它们。重载它只会允许将项目添加到要添加到的项目项目中。