Seite 1 von 1

Verkettung von String und Instanz

Verfasst: Mittwoch 17. Mai 2006, 16:23
von thyseus
Hallo zusammen.

Ich habe eine Klasse:

Code: Alles auswählen

 
class a:
  def __init__(self, bezeichnung):
    self.bezeichnung = bezeichnung

  def __str__(self):
    return self.bezeichnung
führe ich nun folgendes aus:

Code: Alles auswählen

instanz = a("hello")
print instanz
so funktioniert alles wie geplant. Folgendes funktioniert aber nicht:

Code: Alles auswählen

instanz = a("hallo")
print "huhu" + instanz
Die Fehlermeldung lautet:

Code: Alles auswählen

TypeError: cannot concatenate 'str' and 'instance' objects
Gibt es eine Möglichkeit, strings mit dem Rückkgabewert des __str__ einer instanz zu verketten?

Verfasst: Mittwoch 17. Mai 2006, 16:31
von Rebecca

Code: Alles auswählen

print "huhu" + str(instanz)
Und mache besser:

Code: Alles auswählen

def __str__(self):
    return str(self.bezeichnung)
damit str(...) auch wirklich immer einen String zurueck gibt.

Verfasst: Mittwoch 17. Mai 2006, 16:34
von thyseus
Tatsächlich, mit dieser Lösung funktioniert es.

Danke für den Design-Tip :-)

Verfasst: Mittwoch 17. Mai 2006, 19:11
von mitsuhiko
Oder:

Code: Alles auswählen

class A(str):
 def __init__(self, b):
  self.b = b
 def __str__(self):
  return str(self.b)

a = A('World')
print 'Hello ' + a