我在下面用这些操作创建了一个间隔类。 I
是定义的间隔。当我执行操作I+2
和I*2
时,它是如何工作的,而不是相反(2+I
和2*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)
提前致谢!
答案 0 :(得分:1)
您需要添加__radd__
和__rmul__
的实现来处理左操作数未实现操作的情况,并将操作委托给右侧的操作数。
此外,对于NotImplemented
实例不是匹配实例的情况,您可以返回 other
(因此他们也可以使用自己的{{1}来尝试操作}} 方法);此刻你甚至没有归还任何东西:
__r(op)__