1. Warum sieht print(objekt) standardmäßig so hässlich aus?
Wenn du versuchst, ein Objekt ohne Dunder-Methode zu drucken:
mein_buch = Buch("Harry Potter", "J.K. Rowling") print(mein_buch) # Ausgabe: <__main__.Buch object at 0x7fa2b0485d90>
Python weiß ohne deine Hilfe nicht, wie du dein Objekt darstellen möchtest.
✨ Die Magie von
Sobald du in deiner Klasse eine Methode __str__:def __str__(self): definierst, ruft Python diese automatisch auf, wann immer das Objekt zu Text umgewandelt wird (bei print(), str() oder in f-Strings)!
class Buch: def __init__(self, titel, autor): self.titel = titel self.autor = autor def __str__(self): return f"'{self.titel}' von {self.autor}" # MUSS ein String sein! mein_buch = Buch("Harry Potter", "J.K. Rowling") print(mein_buch) # Ausgabe: 'Harry Potter' von J.K. Rowling
2. Objekte in Listen verwalten
Eine Klasse kann als Attribut eine Liste von anderen Objekten haben:
🛒 Der Warenkorb:
Ein Warenkorb besitzt eine Liste self.artikel_liste = []. Wenn du einen Artikel hinzufügst, landet das ganze Artikel-Objekt in der Liste!
3. Deine Aufgaben in aufgabe.py
💡 Lösungshinweise (Aufklappen bei Bedarf)
Tipp zu TODO 7 (Kassenzettel zusammensetzen)
def bon_text(self): zeilen = ["--- KASSENZETTEL ---"] for artikel in self.artikel_liste: zeilen.append(str(artikel)) # Nutzt automatisch __str__ des Artikels! zeilen.append("--------------------") zeilen.append(f"Gesamtsumme: {self.gesamtsumme():.2f} €") return "\n".join(zeilen)
4. Lösung überprüfen
Führe im Terminal im Ordner 04_str_und_darstellung folgenden Befehl aus:
Terminal
python3 test_aufgabe.py