区间类-Python

区间类-Python,python,class,intervals,Python,Class,Intervals,我应该为间隔编写一个类,然后我需要定义加法如何将两个间隔相加。 我已经做到了这一点,它的工作: def __add__ (self, other): return Interval (self.a + other.a, self.b + other.b) 其中a和b是一个间隔的终点 现在我需要修改代码,以便定义区间和数字c float或int之间的加法 [a,b]+c=[a+c,b+c]和 c+[a,b]=[a+c,b+c] 我试过很多不起作用的东西,比如: def __add__

我应该为间隔编写一个类,然后我需要定义加法如何将两个间隔相加。 我已经做到了这一点,它的工作:

def __add__ (self, other):
    return Interval (self.a + other.a, self.b + other.b) 
其中a和b是一个间隔的终点

现在我需要修改代码,以便定义区间和数字c float或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)) 
不管我怎么做都不行。如果你有时间,请看一看并给我一个提示。我真的很感激

您可以假设other已经是一个间隔,然后尝试加法,但如果不是,则捕获异常:

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方法:

您可以假设other已经是一个间隔,然后尝试加法,但如果不是,则捕获异常:

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方法:


如果要为某些非区间类型的c同时定义区间A、b+区间c、d和区间A、b+c,则需要检查定义中的另一个参数

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+间隔A、b,您需要定义


如果你对3+间隔a,b,3.\u添加\u间隔a,b不知道如何处理间隔,因此它返回NotImplemented,这是Python提示尝试间隔a,b.\u radd\u 3。_uuradd_uu的定义通常不太复杂,除非你的运算不是可交换的,也就是说,3+区间a,b和区间a,b+3不相等。

如果你想为一些非区间类型的c同时定义区间a,b+区间c,d和区间a,b+c,你需要检查定义中的另一个参数

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+间隔A、b,您需要定义


如果你对3+间隔a,b,3.\u添加\u间隔a,b不知道如何处理间隔,因此它返回NotImplemented,这是Python提示尝试间隔a,b.\u radd\u 3。_uuuradd_uuu的定义通常并不太复杂,除非你的运算不是可交换的,也就是说,3+区间a,b和区间a,b+3不相等。

我已经这样做了,它可以工作了-你的类有四个属性:a,b,c和d吗?你只需要两个,事实上你是对的。在我的代码中,我定义了区间1和区间2,其中两个区间各包含两个点。这是两个间隔的总和。问题是,当我给一个区间加上一个浮点数或整数时,我似乎弄不明白。我们谈论的是什么样的区间?通常的数字解释范围不会以这种方式添加:[a,b]+[c,d]可能只在b==c时定义,结果将是[a,d]。抱歉,现在我发现我在这里写的东西不正确,所以我刚刚更改了代码。它是关于区间分析的,其主要对象是闭合区间[a,b]。uuu add_uuu不接受额外的参数;这是使用+运算符的实现,因此x+y变成了x.\uuuuuuuy。没有办法在表达式x+y中加入额外的参数。我已经这样做了,它可以工作了-您的类是否具有全部四个属性:a、b、c和d?你只需要两个,事实上你是对的。在我的代码中,我定义了区间1和区间2,其中两个区间各包含两个点。这是两个间隔的总和。问题是,当我给一个区间加上一个浮点数或整数时,我似乎弄不明白。我们谈论的是什么样的区间?通常的数字解释范围不会以这种方式添加:[a,b]+[c,d]可能只在b==c时定义,结果将是[a,d]。抱歉,现在我发现我在这里写的东西不正确,所以我刚刚更改了代码。它是关于区间分析的,其主要对象是闭合区间[a,b]。uuu add_uuu不接受额外的参数;这是使用+运算符的实现,因此x+y变成了x.\uuuuuuuy。无法在表达式x+y中加入其他参数。谢谢!在这种情况下,操作数+间隔是可交换的。对了,对不起,我想在最后一句中明确指出这一点。谢谢!在这种情况下,操作数+间隔是可交换的。对了,对不起,我想在最后一句中明确指出这一点。