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.