2017-05-09 3 views
-1

Ich benutze Python 3.6 und möchte eine Interval-Klasse erstellen. Ich versuche, eine Add-Methode zu erstellen, die eine Ganzzahl und ein Intervall hinzufügen kann. Bisher habe ich es geschafft, einen Code zu generieren, die für I = Intervall (2,3) c = I + 1 # c = [3,4]Klassen und Methoden Python

jedoch das Gegenteil dosent Arbeit

I = Intervall arbeitet (2,3) c = 1 + I #GET die Fehlermeldung Typeerror: Nicht unterstützter Operandentyp (e) für +: 'int' und 'Interval'

mein Code für meine Klasse und Methode ist als folow

Klasse Intervall:

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 hinzufügen (self, andere):

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) 

, wenn ich versuche, meine elif in der Add-Methode zu ändern, wenn nichts funktioniert. Weiß jemand, wie man das löst?

danke!

Antwort

0

Haben Sie Ihren Code ausführen nicht versucht, aber es scheint mir, dass http://www.diveintopython3.net/special-method-names.html nach Ihnen radd Methode implementieren möchten.

Die erste funktioniert, weil Sie Ganzzahl zu Interval (I + 1) hinzufügen und Methode der Interval-Klasse ruft aufgerufen wird. Im zweiten Fall rufen Sie jedoch die add-Methode der Integer-Klasse auf, die nichts über Interval weiß.

+0

Danke! Es funktioniert jetzt mit der radd-Methode! –

+0

Gern geschehen. –

Verwandte Themen