Besondere Methoden
Mit print(guest) schreibt das erste Programm badge mira auf den Bildschirm. Eine besondere Methode sorgt dafür, dass der Badge selbst auf print oder len antwortet. Der Name mira wird in einem Badge gespeichert; es wird kein Paket installiert und kein Ordner angelegt. Die Zeile print(guest) führt str aus, du schreibst guest.str() also nicht selbst ins Programm. Bei Badge("mira") läuft init, und self ist dieser Badge. str liefert die Wörter "badge " plus den Namen zurück, mit genau einem Leerzeichen zwischen badge und mira. Auf den Bildschirm schreibt print.
class Badge:
def __init__(self, name):
self.name = name
def __str__(self):
return "badge " + self.name
guest = Badge("mira")
print(guest)
Auf dem Bildschirm steht eine einzige Zeile: badge mira. Gespeichert ist nur mira; das Wort badge davor setzt str dazu. Geschrieben wird die Zeile von print. Ohne print bliebe der Bildschirm leer, denn etwas zurückzugeben heißt nicht, es zu schreiben. guest.str() steht nicht im Programm; print(guest) genügt, um diese besondere Methode auszuführen. Ein Badge ohne str würde nicht badge mira schreiben, sondern eine Zeile mit dem Namen der Vorlage und einer Stelle im Speicher. None wird nicht geschrieben.
class Badge:
def __init__(self, name):
self.name = name
def __len__(self):
return len(self.name)
guest = Badge("mira")
print(len(guest))
Das zweite Programm steht für sich. Auf seinem Bildschirm erscheint die ganze Zahl 4, weder badge mira noch mira. mira hat vier Buchstaben: m, i, r, a. Darum gibt len die 4 zurück, und print schreibt sie. Es gibt keinen Dezimalpunkt, und im gespeicherten Namen steckt kein Leerzeichen. str ist in diesem Programm nicht definiert, also wird auch nicht badge mira geschrieben. Würde len fehlen, bräche len(guest) mit einem TypeError ab. None wird nicht geschrieben, und das Programm läuft nicht weiter. Diese fehlschlagende Zeile steht nicht im Programm.
📊 Was du schreibst und was erscheint
| Was du schreibst | Was der Bildschirm zeigt |
|---|---|
| print(guest) | badge mira |
| print(len(guest)) | 4 |
| len(guest) ohne __len__ | das Programm bricht ab |
Auf der nächsten Seite steckt ein Objekt in einem anderen Objekt. Diese Seite zeigt nur zwei besondere Methoden an einem einzigen Badge namens mira.
Zwei Antworten, ein Badge
print(guest) schreibt badge mira, weil str läuft. print(len(guest)) schreibt 4, weil len läuft. Die 4 ist die Anzahl der Buchstaben in mira. Hinter diese besonderen Namen setzt du keine Klammern. Auf der nächsten Seite steckt ein Objekt in einem anderen Objekt.
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt