2016-04-28 14 views
-1

Ich versuche, eine Methode von einer vorherigen Klasse für die Klasse aufzurufen, an der ich gerade arbeite. Es ist ein simples GPS-System mit Klassen für verschiedene Dinge. Die Klasse Ich versuche, die Methode sieht wie folgt zu erhalten:Methode von vorheriger Klasse aufrufen

class GPS_POI: 
    def __init__(self, location, name , kind): 
     self.location= location 
     self.name = str(name) 
     self.kind = str(kind) 

    def __str__ (self): 
     return (str(self.location) + ": "+ self.name +", " + self.kind) 

die aktuelle Klasse und Methode arbeite ich an:

class GPS : 
    def __init__ (self, current, map = None): 
     self.current = current 
     self.map= map 
     self.route= [] 

    def display_map(self): 

     for i in self.route: 
      display= GPS_POI() 
      return (display.__str__ + "\n") 

Wenn ich es laufen, ich am Ende nur immer das Ergebnis "None", wenn der Ausgang I (Beispiel) wollen wäre:

"(3,1): kmart, Kleidung \ n (2,3): Burger king, Essen \ n" usw.

Müsste ich meinen Parameter self.map aus dem cl hinzufügen Ass GPS in die Funktion display_map für es richtig funktioniert? Was verstehe ich nicht beim Aufruf einer Methode aus einer vorherigen Klasse?

Antwort

1

Sie rufen nicht an display.__str__; Sie verweisen nur darauf. Sie sollten __str__ trotzdem nicht explizit anrufen. Sein Zweck ist es, einen Haken zu schaffen, wenn Sie versuchen, das Objekt als String, wie zu behandeln, wenn es um str als Argument übergeben:

return str(display) + "\n" 
+0

oh in Ordnung, das macht Sinn. Ich ersetze das, was ich in meinem Code hatte, um str (display) + "\ n" zurückzugeben und bekomme immer noch die Ausgabe von "None". Irgendwelche Gedanken darüber, warum das in meinem Fall sein könnte? – Nick

Verwandte Themen