2017-05-09 12 views
-1

私はPython 3.6を使用しており、Intervalクラスを作成したいと考えています。私は整数とインターバルを追加できるaddメソッドを実行しようとしています。これまで私は ためI =インターバル(2,3) C = I + 1#Cは= [3,4]クラスとメソッドpython

しかし反対dosent仕事

I =間隔を動作するコードを生成するために、管理しました(2,3) C = 1 + Iは、エラーメッセージはTypeError #get:+ためにサポートされていないオペランドタイプ(複数可): 'INT' と '間隔'

をfolowとして私のクラスおよびメソッドのための私のコードであります

クラス間隔:

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を変更しようとした場合。誰もこれを解決する方法を知っていますか?

ありがとうございました!

答えて

0

あなたのコードを実行しようとしたことはありませんが、http://www.diveintopython3.net/special-method-names.htmlによれば、raddメソッドを実装したいと思うかもしれません。

Interval(I + 1)に整数を追加し、Intervalクラスのaddメソッドが呼び出されるため、最初の関数が機能します。しかし、2番目のケースでは、Intervalについて何も知らない整数クラスのaddメソッドを呼び出しています。

+0

ありがとうございます!これはraddメソッドで動作します! –

+0

あなたは大歓迎です。 –

関連する問題