乘以或添加常量

时间:2017-05-11 12:49:54

标签: python class intervals

我在下面用这些操作创建了一个间隔类。 I是定义的间隔。当我执行操作I+2I*2时,它是如何工作的,而不是相反(2+I2*I)?有任何想法吗? (当我在这里复制代码时,这些行没有得到正确的块。)

def __add__(self,other):
    s1, f1 = self.s, self.f
    n = other
    if isinstance(other, Interval):
        s2, f2 = other.s, other.f 
        return Interval(s1 + s2, f1+f2)   

def __mul__(self, other):
    s1, f1 = self.s, self.f         
    if isinstance(other, Interval):
        s2, f2= other.s, other.f
        return Interval(min(s1*s2,s1*f2,f1*s2,f1*f2),
                        max(s1*s2,s1*f2,f1*s2,f1*f2))

def __repr__(self): 
    return "[{},{}]".format(self.a,self.b)       

提前致谢!

1 个答案:

答案 0 :(得分:1)

您需要添加__radd____rmul__的实现来处理左操作数未实现操作的情况,并将操作委托给右侧的操作数。

此外,对于NotImplemented实例不是匹配实例的情况,您可以返回 other(因此他们也可以使用自己的{{1}来尝试操作}} 方法);此刻你甚至没有归还任何东西:

__r(op)__