Python Lernhandbuch

Kapitel 7: Klassen und Objekte · Abschnitt 1 von 5

Eine erste Klasse

python
class Konto:
    """Ein einfaches Bankkonto."""

    zinssatz = 0.01                       # Klassenattribut: gehört allen Konten gemeinsam

    def __init__(self, inhaber, stand=0.0):
        self.inhaber = inhaber            # Instanzattribut: gehört diesem Konto
        self.stand = stand

    def einzahlen(self, betrag):
        if betrag <= 0:
            raise ValueError('Betrag muss positiv sein')
        self.stand += betrag

    def abheben(self, betrag):
        if betrag > self.stand:
            raise ValueError('Nicht genug Guthaben')
        self.stand -= betrag

    def __str__(self):
        return f'{self.inhaber}: {self.stand:.2f} Euro'


k = Konto('Anna', 100)      # erzeugt ein Objekt (Instanz)
k.einzahlen(50)
k.abheben(30)
print(k)                    # Anna: 120.00 Euro
print(k.stand)              # 120

Zeile für Zeile:

  • class Konto: definiert die Klasse. Der Name wird per Konvention in CamelCase geschrieben.
  • __init__ ist der Konstruktor. Python ruft ihn automatisch auf, wenn du Konto(...) schreibst. Die Parameter nach self sind die Argumente des Aufrufs.
  • self ist das Objekt selbst. Es steht in jeder Methode als erster Parameter und wird beim Aufruf automatisch eingesetzt: k.einzahlen(50) entspricht Konto.einzahlen(k, 50). In C wäre self der Zeiger auf die struct, den du jeder Funktion mitgibst.
  • self.stand = stand legt ein Attribut am Objekt an. Es gibt keine Deklaration der Attribute vorab, sie entstehen durch Zuweisung (in __init__).
  • raise ValueError(...) bricht die Methode mit einem Fehler ab. Wie man Fehler behandelt, lernst du im nächsten Kapitel. Hier genügt: raise löst einen Fehler aus.
  • __str__ bestimmt, was print(k) oder str(k) ausgibt.

Tipp: Bei Python-Beispielen kannst du auf ▶ Ausprobieren klicken, den Code verändern und direkt ausführen.

← Kapitelübersicht