Klassen¶
Eine Klasse in Python ist eigentlich ein
Datentyp. Alle in Python eingebauten Datentypen sind Klassen, und Python stellt
euch leistungsfähige Werkzeuge bereit, um jeden Aspekt des Verhaltens einer
Klasse zu manipulieren. Ihr könnt eine Klasse mit der class
-Anweisung
definieren:
>>> class MyClass:
... STATEMENTS
MyClass
Klassenbezeichner werden üblicherweise in Großbuchstaben geschrieben, d.h. der erste Buchstabe jedes Wortes wird großgeschrieben, um die Bezeichner hervorzuheben.
STATEMENTS
ist eine Liste von Python-Anweisungen – in der Regel Variablenzuweisungen und Funktionsdefinitionen. Es sind jedoch keine Zuweisungen oder Funktionsdefinitionen erforderlich, es kann auch nur eine einzige
pass
-Anweisung sein.
Nachdem ihr die Klasse definiert habt, könnt ihr ein neues Objekt des Klassentyps (eine Instanz der Klasse) erstellen, indem ihr den Klassennamen als Funktion aufruft:
>>> class Square:
... length = 1
...
>>> my_square = Square()
Klasseninstanzen können als Strukturen oder Datensätze verwendet werden. Im
Gegensatz zu C-Strukturen oder Java-Klassen müssen die Datenfelder einer Instanz
jedoch nicht im Voraus deklariert werden. Das folgende kurze Beispiel definiert
eine Klasse namens Square
, erstellt eine Square
-Instanz, weist der
Kantenlänge einen Wert zu und verwendet diesen Wert dann zur Berechnung des
Umfangs:
>>> my_square.length = 3
>>> print(f"Der Umfang des Quadrats ist {4 * my_square.length}.")
Der Umfang des Quadrats ist 12.
- Zeile 1
Wie in Java und vielen anderen Sprachen werden die Felder einer Instanz mit Hilfe der Punktnotation angesprochen.
Ihr könnt Felder einer Instanz automatisch initialisieren, indem ihr eine
__init__
-Initialisierungsmethode in die Klasse aufnehmt. Diese Funktion wird
jedes Mal ausgeführt, wenn eine Instanz der Klasse mit dieser neuen Instanz als
erstes Argument self
erstellt wird. Anders als in Java und C++ können
Python-Klassen auch nur eine __init__
-Methode haben. Im folgenden Beispiel
werden standardmäßig Quadrate mit einer Kantenlänge von 1
erzeugt:
1>>> class Square:
2... def __init__(self):
3... self.length = 1
4...
5>>> my_square = Square()
6>>> print(f"Der Umfang des Quadrats ist {4 * my_square.length}.")
7Der Umfang des Quadrats ist 4.
- Zeile 2
Der Konvention nach ist
self
immer der Name des ersten Arguments von__init__
.self
wird auf die neu erstellteSquare
-Instanz gesetzt, wenn__init__
ausgeführt wird.- Zeile 5
Als nächstes erstellt ihr ein
Square
-Instanzobjekt.- Zeile 6
Diese Zeile nutzt die Tatsache, dass das
length
-Feld bereits initialisiert ist.
Ihr könnt das length
-Feld auch überschreiben, so dass die letzte Zeile ein
anderes Ergebnis ausgibt als die vorherige print
-Anweisung:
>>> my_square.length = 3 >>> print(f"Der Umfang des Quadrats ist {4 * my_square.length}.") Der Umfang des Quadrats ist 12.