Objektorientiere Programmierung und Klassen
Zusammenfassung des Materials und Spickzettel
Klassen sind Baupläne für Objekte. In heutigen Programmiersprachen besteht alles aus Klassen. Eine Klasse besteht aus Attributen und Methoden. Attributen sind das, was ein Objekt weiß, Methoden sind das, was ein Objekt kann.
Wir erzeugen eine Klasse wie folgt:
class Name_der_Klasse:
def __init__(self,parameter):
self.attribut_1 =
self.attribut_2 =
...
__init__()
nennt man den Konstruktor. Hier erklären wir, wie eine Objekt aufgebaut ist. Jede Klasse hat einen Konstruktor. self
ist immer das erste Argument in Klassenmethoden – es bedeutet “dieses Objekt selbst”. Es ist notwendig, um auf die Attribute und andere Methoden des Objekts zuzugreifen.
Zum Beispiel können wir eine Klasse Person erstellen
class Person:
def __init__(self,name,geburtsjahr,beruf):
self.name = name
self.geburtsjahr = geburtsjahr
self.beruf = beruf
ada = Person("Ada",1815,"Programmierin")
Methoden sind Funktionen innerhalb einer Klasse. Sie beschreiben Verhalten.
class Person:
def __init__(self,name,geburtsjahr,beruf):
self.name = name
self.geburtsjahr = geburtsjahr
self.beruf = beruf
def berechne_alter(self,aktuelles_jahr):
return aktuelles_jahr - self.geburtsjahr
def steckbrief(self):
print(self.name + " arbeitet als " + self.beruf + ".")
ada = Person("Ada",1815,"Programmierin")
ada.steckbrief()
adas_alter = ada.berechne_alter(2025)
Man kann in Methoden auch Attribute ändern:
class Person:
def __init__(self,name,geburtsjahr,beruf):
self.name = name
self.geburtsjahr = geburtsjahr
self.beruf = beruf
def berechne_alter(self,aktuelles_jahr):
return aktuelles_jahr - self.geburtsjahr
def steckbrief(self):
print(self.name + " arbeitet als " + self.beruf + ".")
def neuer_beruf(self,neuer_job):
self.beruf = neuer_beruf
ada = Person("Ada",1815,"Programmierin")
ada.steckbrief()
adas_alter = ada.berechne_alter(2025)
In Python gibt es eine Reihe von magischen Methoden, so genannten Dunder Methoden (Dunder = Double UNDERscore):
Methode | Zweck / Wird aufgerufen bei … | Beispiel |
---|---|---|
__init__(self, ...) | Konstruktor: Beim Erstellen eines Objekts | obj = Klasse(...) |
__str__(self) | Wenn print(obj) oder str(obj) aufgerufen wird | print(obj) |
__repr__(self) | Offizielle Darstellung (z. B. in der Konsole) | repr(obj) |
__eq__(self, other) | == Vergleich | obj1 == obj2 |
__ne__(self, other) | != Vergleich | obj1 != obj2 |
__lt__(self, other) | < Vergleich | a < b |
__le__(self, other) | <= Vergleich | a <= b |
__gt__(self, other) | > Vergleich | a > b |
__ge__(self, other) | >= Vergleich | a >= b |
__add__(self, other) | + Operator | a + b |
__sub__(self, other) | - Operator | a - b |
__mul__(self, other) | * Operator | a * b |
__truediv__(self, o) | / Operator | a / b |
__floordiv__(self, o) | // Operator | a // b |
__mod__(self, other) | % Operator | a % b |
__pow__(self, other) | ** Operator | a ** b |