我应该编写一个间隔期类,然后需要定义加法(如何将两个间隔相加)。我做过这件事,效果很好:
def __add__ (self, other):
return Interval (self.a + other.a, self.b + other.b) 其中a和b是一个区间的结束点。
现在,我需要修改代码,以便定义间隔和数字c(浮点或int)之间的加法。
a,b+c = a+c,b+c和
C+ a,b= a+c,b+c。
我尝试过很多不起作用的东西,比如:
def __add__ (self, other, *args):
if args:
return Interval (self.a + other.a, self.b + other.b)
else:
return Interval (self.a + int(number), self.b + int(number)) 不管我做什么都没用。如果你有时间,请看一看,给我一个提示。我真的很感激!
发布于 2019-12-06 15:25:53
如果您想同时定义Interval(a, b) + Interval(c, d)和Interval(a, b) + c (对于某些非Interval类型的c),则需要检查定义中的参数other。
def __add__(self, other):
if instanceof(other, Interval):
return Interval(self.a + other.a, self.b + other.b)
elif instanceof(other, (int, float)):
return Interval(self.a + other, self.b + other)
else:
return NotImplemented要同时支持c + Interval(a, b),您需要定义__radd__
def __radd__(self, other):
return self + other如果您正确地使用3 + Interval(a, b),3.__add__(Interval(a, b))不知道如何处理Interval,因此它返回NotImplemented,这是Python尝试Interval(a, b).__radd__(3)的提示。__radd__的定义通常并不太复杂,除非您的操作不是可交换的(也就是说,3 + Interval(a, b)和Interval(a, b) + 3并不相等)。
发布于 2019-12-06 15:23:52
您可以假设other已经是一个Interval,并尝试添加,但如果不是,则会捕获一个异常:
def __add__ (self, other):
try:
return Interval (self.a + other.a, self.b + other.b)
except AttributeError:
pass
return Interval (self.a + int(other), self.b + int(other))如果要计算42 + x,则需要radd方法:
def __radd__(self, other):
return self + otherhttps://stackoverflow.com/questions/59215736
复制相似问题