Verkettung von String und Instanz

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
thyseus
User
Beiträge: 2
Registriert: Mittwoch 17. Mai 2006, 16:18
Kontaktdaten:

Mittwoch 17. Mai 2006, 16:23

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?
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Mittwoch 17. Mai 2006, 16:31

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.
thyseus
User
Beiträge: 2
Registriert: Mittwoch 17. Mai 2006, 16:18
Kontaktdaten:

Mittwoch 17. Mai 2006, 16:34

Tatsächlich, mit dieser Lösung funktioniert es.

Danke für den Design-Tip :-)
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Mittwoch 17. Mai 2006, 19:11

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
TUFKAB – the user formerly known as blackbird
Antworten