Zum Inhalt springen
BetaEN
Lektion 24 von 35Python

Python · Lektion 24 · 35 Minuten

Klassen und Objekte

Das lernst du

  • Mit class einen eigenen Bauplan für Objekte schreiben
  • Eigenschaften in __init__ festlegen und über self benutzen
  • Methoden schreiben, die ein Objekt verändern

Bauplan und Bauteil

Stell dir vor, du baust Roboter. Jeder Roboter hat einen Namen und einen Akkustand, und jeder kann fahren. Statt für jeden Roboter einzelne Variablen anzulegen, schreibst du einen Bauplan: eine Klasse. Aus dem Bauplan baust du dann beliebig viele Objekte.

class Hund:
    def __init__(self, name, alter):
        self.name = name
        self.alter = alter

bello = Hund("Bello", 3)
luna = Hund("Luna", 7)

print(bello.name)
print(luna.alter)

Klassennamen schreibt man groß (Hund, Roboter). Drück auf Schritte: Im Speicher siehst du zwei Objekte mit eigenen Werten.

init und self

__init__ (zwei Unterstriche vorne und hinten) läuft automatisch, wenn ein neues Objekt gebaut wird. Hier legst du die Eigenschaften fest.

self bedeutet „dieses Objekt hier“. self.name = name heißt: Speichere den Namen in diesem Objekt. Deshalb kann jeder Hund seinen eigenen Namen haben.

Methoden: Was ein Objekt kann

Funktionen innerhalb einer Klasse heißen Methoden. Sie bekommen immer self als ersten Parameter und können so die Eigenschaften des Objekts lesen und ändern:

class Konto:
    def __init__(self, besitzer):
        self.besitzer = besitzer
        self.stand = 0

    def einzahlen(self, betrag):
        self.stand = self.stand + betrag

    def anzeigen(self):
        return f"{self.besitzer} hat {self.stand} €"

mein_konto = Konto("Mia")
mein_konto.einzahlen(20)
mein_konto.einzahlen(15)
print(mein_konto.anzeigen())

Beim Aufruf mein_konto.einzahlen(20) gibst du self nicht mit – Python setzt automatisch das Objekt vor dem Punkt ein.

Merke: Eine Klasse ist der Bauplan, ein Objekt ist das gebaute Ding. Hund ist eine Klasse, bello ist ein Objekt.

Warum das für Roboter wichtig ist

Wenn du später LEGO SPIKE programmierst, arbeitest du ständig mit Objekten: Ein Motor ist ein Objekt mit Methoden wie run_angle(), ein Sensor eins mit distance(). Jetzt weißt du, wie so etwas von innen aussieht.

Kurz-Check

Bevor es an die Aufgabe geht: Was gibt dieses Programm aus? Tipp deine Vermutung ein – Python rechnet danach nach.

class Hund:
    def __init__(self, name):
        self.name = name
        self.tricks = 0

    def lernen(self):
        self.tricks += 1


bello = Hund("Bello")
bello.lernen()
bello.lernen()
print(bello.name, bello.tricks)

Deine Aufgabe

Jetzt bist du dran

Vervollständige die Klasse Roboter. Ein neuer Roboter hat einen name und startet mit akku = 100. Die Methode fahren(meter) verbraucht pro 10 Meter 1 % Akku (also meter // 10), der Akku darf aber nie unter 0 fallen. Die Methode status() gibt einen Text zurück wie Robo: 95 % Akku.

class Roboter:
    def __init__(self, name):
        self.name = name
        # Lege hier den Akku an

    def fahren(self, meter):
        # Verbrauche Akku
        pass

    def status(self):
        # Gib den Status-Text zurück
        pass


robo = Roboter("Robo")
robo.fahren(50)
print(robo.status())

Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.

Lösung anzeigen

Versuch es erst selbst – aus Fehlern lernt man am meisten. Hier ist eine mögliche Lösung:

class Roboter:
    def __init__(self, name):
        self.name = name
        self.akku = 100

    def fahren(self, meter):
        self.akku = self.akku - meter // 10
        if self.akku < 0:
            self.akku = 0

    def status(self):
        return f"{self.name}: {self.akku} % Akku"


robo = Roboter("Robo")
robo.fahren(50)
print(robo.status())
Mehr üben im TrainingsraumEndlos neue Aufgaben zu diesem Thema – mit XP und Serien.