类和方法python

时间:2017-05-09 15:14:06

标签: class methods

我正在使用python 3.6并想要创建一个Interval类。我正在尝试添加一个可以添加整数和intervall的add方法。到目前为止,我设法生成一个适用于的代码 I =间隔(2,3) c = I + 1#c = [3,4]

然而,相反的剂量工作

I =间隔(2,3) c = 1 + I #get错误消息TypeError:不支持的操作数类型+:' int'和'间隔'

我的类和方法的代码如下:

班级间隔:

def __init__(self,start=None,end=None):
        if end==None:
            end=start
        if start==None:
            start=end
        if start>end:
            raise TypeError('left value must be smaller than right value')

        self.start=start
        self.end=end

def 添加(自我,其他):

    if isinstance(other,int):    
        s2,e2=other,other
        s1,e1=self.start,self.end

    elif isinstance(self,int):
        s1,e1=self,self
        s2,e2=other.start,other.end


    else:
        s2,e2=other.start,other.end
        s1,e1=self.start,self.end
    return Interval(s1+s2,e1+e2)

如果我尝试在add方法中更改我的elif,如果没有任何效果。有谁知道如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

没有尝试运行您的代码,但在我看来,根据http://www.diveintopython3.net/special-method-names.html,您可能希望实施 radd 方法。

第一个工作,因为你要向Interval(I + 1)添加整数并调用Interval类的add方法。但是,在第二种情况下,您正在调用整数类的add方法,它对Interval一无所知。