Python

⌘K
  1. Home
  2. Docs
  3. Python
  4. Python Klassen und Objekte

Python Klassen und Objekte

Python Klassen und Objekte (engl.: Python Classes and Objects): In Python sind Klassen und Objekte grundlegende Konzepte der objektorientierten Programmierung (OOP). Klassen fungieren als Baupläne oder Vorlagen für Objekte, während Objekte Instanzen dieser Klassen sind. OOP ermöglicht es, Daten und Funktionen zusammenzufassen und so komplexe Softwarestrukturen zu erstellen.

1. Klassen definieren

Eine Klasse wird mit dem Schlüsselwort class definiert, gefolgt vom Namen der Klasse und einem Doppelpunkt. Innerhalb der Klasse können Sie Attribute (Variablen) und Methoden (Funktionen) definieren.

Beispiel

class Auto:
    def __init__(self, marke, modell):
        self.marke = marke
        self.modell = modell

    def beschreibung(self):
        return f"{self.marke} {self.modell}"

In diesem Beispiel wird eine Klasse Auto mit zwei Attributen (marke und modell) und einer Methode beschreibung erstellt.

2. Objekte erstellen

Um ein Objekt zu erstellen, instanziieren Sie die Klasse, indem Sie den Klassennamen wie eine Funktion aufrufen.

Beispiel

mein_auto = Auto("Volkswagen", "Golf")
print(mein_auto.beschreibung())  # Ausgabe: Volkswagen Golf

3. Der Konstruktor

Die Methode __init__() ist der Konstruktor einer Klasse. Sie wird aufgerufen, wenn ein neues Objekt der Klasse erstellt wird. Hier können Sie die Attribute initialisieren.

Beispiel

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

    def bellen(self):
        return f"{self.name} sagt: Wuff!"

4. Attribute und Methoden

Attribute sind Variablen, die den Zustand eines Objekts beschreiben. Methoden sind Funktionen, die das Verhalten eines Objekts definieren.

Beispiel

mein_hund = Hund("Bello", "Labrador")
print(mein_hund.bellen())  # Ausgabe: Bello sagt: Wuff!

5. Klassenattribute und Instanzattribute

Es gibt zwei Arten von Attributen: Klassenattribute und Instanzattribute. Klassenattribute sind für alle Instanzen der Klasse gleich, während Instanzattribute spezifisch für jede Instanz sind.

Beispiel

class Katze:
    art = "Hauskatze"  # Klassenattribut

    def __init__(self, name):
        self.name = name  # Instanzattribut

    def info(self):
        return f"{self.name} ist eine {Katze.art}."

Verwendung

katze1 = Katze("Miez")
katze2 = Katze("Fifi")
print(katze1.info())  # Ausgabe: Miez ist eine Hauskatze.
print(katze2.info())  # Ausgabe: Fifi ist eine Hauskatze.

6. Vererbung

Vererbung ermöglicht es, eine neue Klasse zu erstellen, die Eigenschaften und Methoden einer bestehenden Klasse erbt. Dies fördert die Wiederverwendbarkeit des Codes.

Beispiel

class Tier:
    def __init__(self, name):
        self.name = name

    def spreche(self):
        raise NotImplementedError("Diese Methode muss in einer Unterklasse implementiert werden.")

class Hund(Tier):
    def spreche(self):
        return f"{self.name} sagt: Wuff!"

class Katze(Tier):
    def spreche(self):
        return f"{self.name} sagt: Miau!"

Verwendung

hund = Hund("Bello")
katze = Katze("Miez")
print(hund.spreche())  # Ausgabe: Bello sagt: Wuff!
print(katze.spreche())  # Ausgabe: Miez sagt: Miau!

7. Polymorphismus

Polymorphismus ermöglicht es, dass verschiedene Klassen dieselbe Methode implementieren, sodass sie unterschiedlich reagieren können, obwohl sie denselben Namen haben.

Beispiel

def tier_sprechen(tier):
    print(tier.spreche())

tier_sprechen(hund)  # Ausgabe: Bello sagt: Wuff!
tier_sprechen(katze)  # Ausgabe: Miez sagt: Miau!

8. Kapselung

Kapselung ist ein Prinzip, bei dem die internen Zustände eines Objekts verborgen werden. In Python kann dies durch die Verwendung von privaten und geschützten Attributen erreicht werden.

Beispiel

class Bankkonto:
    def __init__(self, kontostand):
        self.__kontostand = kontostand  # Privates Attribut

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

    def abheben(self, betrag):
        if betrag <= self.__kontostand:
            self.__kontostand -= betrag
        else:
            print("Nicht genügend Guthaben!")

    def zeige_kontostand(self):
        return self.__kontostand

Verwendung

mein_konto = Bankkonto(100)
mein_konto.einzahlen(50)
print(mein_konto.zeige_kontostand())  # Ausgabe: 150
mein_konto.abheben(200)  # Ausgabe: Nicht genügend Guthaben!

Häufig gestellte Fragen

Was ist der Unterschied zwischen einer Klasse und einem Objekt?

Eine Klasse ist ein Bauplan oder eine Vorlage für Objekte. Ein Objekt ist eine Instanz dieser Klasse und repräsentiert ein spezifisches Exemplar.

Was sind Attribute und Methoden?

Attribute sind Variablen, die den Zustand eines Objekts beschreiben. Methoden sind Funktionen, die das Verhalten eines Objekts definieren.

Was ist Vererbung in Python?

Vererbung ist ein Konzept, bei dem eine neue Klasse Eigenschaften und Methoden einer bestehenden Klasse erben kann, was die Wiederverwendbarkeit des Codes fördert.