Python Class
Python classes und Python objects oder auch Python Klassen und Python Objekte sind die Grundlage des Objektorientierten Programmierens (OOP, engl. object oriented programming). Was eine Instanz oder ein Konstruktor ist, erfährst du hier und in unserem Video.
Inhaltsübersicht
Was ist ein Objekt?
Ein Python Objekt oder auch Python Klasse (engl. python object oder auch python class) ist eine Programmiertechnik, mit der du deine Python Software strukturieren kannst. Eine Klasse definierst du mit dem class
-Befehl (Zeile 1). Danach kommt ein Name für deine Klasse und ein Doppelpunkt. Alle eingerückte Zeilen (Zeile 2-4) gehören zu deiner Klasse.
Innerhalb deiner Python class kannst du dein Programm mit Variablen und Funktionen schreiben. Die Variablen in einer Klasse heißen Attribute (Zeile 2). Die Funktionen innerhalb einer Klasse heißen Methoden (engl. methods, Zeile 3). Du kannst dann auf die Attribute und Methoden nur über den Namen der Klasse zugreifen, indem du hinter den Python Klassennamen (engl. python class name) einen Punkt und danach den Python Variablen- oder Python Funktionsnamen schreibst (Zeile 6 und 7).
1 class Person:
2 name = "Max Mustermann"
3 def gruss(self):
4 print("Hallo!")
5
6 print(Person.name)
7 print(Person.gruss)
Ausgabe:
Max Mustermann
<function Person.gruss at 0x7f2d00cac8b0>
Python classes/Klassen machen deine Python Software komplizierter, aber:
- Du kannst die Klasse als Vorlage benutzen, um verschiedene Versionen deiner Klasse zu erzeugen. Das nennst du eine Instanz (engl. instance) deiner Klasse. Z.B. kannst du für verschiedene Menschen eine Instanz der Klasse Person (Zeile 1) erzeugen und jede Instanz speichert einen anderen Namen (Zeile 2).
- Außerdem verändern und benutzen nur die Methoden/Funktionen deiner Klasse die Attribute/Variablen. Von Außerhalb sollte nie auf die Klasse zugegriffen werden. Dadurch werden komplizierte Programme übersichtlicher.
Syntax Definition von Klassen
Schauen wir uns noch einmal die Definition der Klasse Person an: Wie bisher erzeugst du eine Klasse mit dem Pythonbefehl class
(Zeile 1). Die Python class hat wieder das Attribut name (Zeile 2) und die Methode gruss (Zeile 3).
Du kannst so viele Python Funktionen in einer Klasse definieren, wie du möchtest (Zeile 3 und 5). Aber aufgepasst: Der erste Parameter einer Methode muss immer self sein! Du siehst in Zeile 4, warum das wichtig ist. Wenn du auf „name“ in deiner Klasse zugreifen willst, kannst du das nur mit self.name (Zeile 4). Genau wie du von außerhalb der Klasse nur mit dem Namen Person
auf die Attribute der Klasse zugreifen kannst, kannst du innerhalb von Methoden nur mit self
auf die Attribute deiner Klasse zugreifen.
1 class Person:
2 name = "Max Mustermann"
3 def gruss(self):
4 print(f"Hallo! Ich bin {self.name}.")
5 def set_name(self, neuerName):
6 self.name = neuerName
Du benutzt allerdings nicht die Klasse Person in deinem Programm, sondern eine Instanz max
von ihr. Du erzeugst eine neue Instanz, indem du den Namen deiner Klasse mit runden Klammern (Person()
) schreibst und es einem neuen Variablennamen (max
) zuweist (Zeile 7).
Klassen sind Vorlagen, mit denen du Objekte erzeugen kannst. Ein bestimmtes Objekt deiner Klasse heißt Instanz. Instanzen (engl. instances) erzeugst du durch den Funktionsaufruf deiner Klasse (instanz = Klasse()
). Löschen kannst du Instanzen mit dem del
-Befehl (del instanz
).
Jetzt kannst du die Instanz max
benutzen. Sie hat alle Attribute und Methoden von deiner Klasse Person. Du greifst auf sie mit dem Namen der Instanz zu (Zeile 8). Wichtig: Obwohl die Funktion gruss()
als erstes Argument self
erwartet, musst du es in Zeile 8 nicht angeben. Das macht Python automatisch für dich.
7 max = Person()
8 max.gruss()
Ausgabe: Hallo! Ich bin Max Mustermann.
Du solltest die Attribute von Python classes nur mit Methoden verändern. Du kannst zum Beispiel die Methode set_name()
(Zeile 5) benutzen, um den Namen von max
zu ändern. Auch hier musst du den Parameter self
nicht übergeben (Zeile 9). Das macht Python für dich.
9 max.set_name("Max Mümmelmann")
10 max.gruss()
Ausgabe: Hallo! Ich bin Max Mümmelmann.
Konstrukor __init__()
Zuletzt werfen wir noch einen Blick auf eine besondere Methode: __init__()
. Sie wird auch der Konstruktor deiner Klasse genannt. Der Konstruktor wird aufgerufen, wenn du eine neue Instanz deiner Klasse erzeugst. Damit kannst du Python classes individualisieren. Bisher heißen alle Instanzen von Person Max Mustermann. Mit __init__()
kannst du jeder Instanz einen eigenen Namen geben.
Dafür definierst du die Methode __init__()
(Zeile 2). Ihr erster Parameter muss self
sein. Als zweiten Parameter erwartet sie hier voller_name
. Wenn du eine neue Instanz erzeugst, musst du in den runden Klammern die Parameter angeben, die dein Konstruktor erwartet (Zeile 9 und 10). self
ist wieder die Ausnahme. Das macht Python automatisch für dich.
Hier speichert der Konstruktor den Parameter voller_name
als ein Attribut der Instanz self.name
(Zeile 3). Jede Instanz (alice, bob) hat also einen eigenen Wert für die Variable. Deshalb druckt gruss() für jede Instanz eine andere Nachricht (Zeile 11 und 12).
1 class Person:
2 def __init__(self, voller_name):
3 self.name = voller_name
4 def gruss(self):
5 print(f"Hallo! Ich bin {self.name}.")
6 def set_name(self, neuerName):
7 self.name = neuerName
8
9 alice = Person("Alice")
10 bob = Person("Bob")
11 alice.gruss()
12 bob.gruss()
Ausgabe:
Hallo! Ich bin Alice.
Hallo! Ich bin Bob.
Python Funktion
Die Funktionen einer Klasse (engl. Python class) heißen Methoden. Schaue dir auch unser Video zu Funktionen an, um deine Klassen richtig zu programmieren.