Der leichte Einstieg Scratch-Kurse
Faszination Coding Programmieren für Kinder
Für Fortgeschrittene Python

Python Klassen | Einführung & Tutorial

Veröffentlicht: . Geändert: .
Python Klassen Erklärung

Python Klassen machen das Coden einfacher. Denn sie helfen Dir dabei Deinen Code besser zu strukturieren. Klassen sind zudem ein fundamentales Konzept der objektorientierten Programmierung. Sie bündeln Eigenschaften und Methoden und werden in Form von Objekten zum Leben erweckt.

Was sind Python Klassen?

Python Klassen helfen Dir dabei, Deinen Code zu ordnen. Sie ermöglichen es Dir nämlich mit Deinem Code ein Objekt zu beschreiben. Und wie Du vielleicht bereits im Computerkurs gelernt hast, dreht sich bei dieser Coding-Sprache alles um Objekte. Aber von vorne: Um zu verstehen, wozu Du Klassen verwenden kannst, müssen wir uns zunächst ein wenig mit der Idee der objektorientierten Programmierung in Python beschäftigen.

Die objektorientierte Programmierung (OOP) ist ein richtungsweisender Zweig der Softwareentwicklung. An vielen Universitäten, wie der Universität Marburg, ist sie deshalb fester Bestandteil des Lehrplans im Fach Informatik. Die Idee dahinter ist, dass man in der Software die Wirklichkeit in Form von Objekten nachbildet, wie das eben auch bei den Python Datentypen der Fall ist. Objekte haben in der Wirklichkeit dabei Eigenschaften und ein Verhalten. Ein Bär hat zum Beispiel die Eigenschaften Alter, Gewicht und Größe. Zu seinen Verhaltensweisen könnte gehören, dass er schläft und frisst. Zugegebenermaßen ist das eine etwas reduzierte Beschreibung, aber das ist vollkommen in Ordnung. Den Programmierer interessieren schließlich nicht alle Eigenschaften und Verhaltensweisen, er modelliert nur die, die für das Programm relevant sind. Wir merken uns also: Objekte haben Eigenschaften und Verhaltensweisen.

Python Klassen erstellen
Abb. 1: Wir definieren die Python Klasse Baer

Beim objektorientierten Coding modelliert man Objekte in Form von Klassen. Das heißt, man definiert in einer Art Beschreibung, welche Eigenschaften ein Objekt hat (das sind die Variablen) und was man damit machen kann (das sind die Methoden). Zeit für ein erstes Beispiel, oder?

Klassen in Python erstellen

Im Folgenden ist die Python Klasse Bär wiedergegeben, zunächst noch ohne Variablen und Methoden:

Python Klasse: Bär

Umlaute vermeidet man im Programmcode, deswegen heißt die Klasse Baer und nicht Bär. Die Klasse wird durch das Schlüsselwort class eingeleitet, gefolgt vom groß geschriebenen Namen der Klasse. Variablen der Klasse lassen sich anschließend direkt darunter angeben:

Python Klassen: Eigenschaften eines Objekts

Mit den beiden Methoden schlafen und fressen sieht das nun so aus:

Python Klassen: Methoden

Die Methodennamen folgen wie Funktionsdefinitionen auf das eingerückte Schlüsselwort def. Die Methodeninhalte werden hier im Beispiel durch die beiden print-Ausgaben angedeutet.

Mit Python Klassen verschiedene Typen erzeugen

Eine Python Klasse ist eine generische Beschreibung, so etwas wie ein Bauplan. Mit diesem Bauplan lassen sich nun konkrete Bären mit verschiedenem Gewicht, Alter und Größe erzeugen. Diese Softwareobjekte, mit denen man im Code umgeht, nennt man auch Instanzen. Die Begriffe Objekt und Instanz werden synonym verwendet. Instanz klingt komplizierter, macht aber deutlich, dass es hier um eine spezielle Ausprägung einer allgemeinen Beschreibung geht. Den Vorgang, Instanzen zu erzeugen, nennt man Instanziieren. Eine Bär-Instanz erzeugt man wie folgt:

Klassen in Python: Bruno

Hier wurde eine Instanz namens bruno erstellt. Das heißt, es wurde wie mithilfe einer Gussform ein Objekt geschaffen, das man im Code nutzen kann. Man kann zum Beispiel Methoden für bruno aufrufen. Um ihn zum Beispiel eine halbe Stunde schlafen zu lassen, kannst Du folgenden Befehl nutzen:

Bruno schlafen

Natürlich kannst Du Dir anschließend einen weiteren Bären instanziieren:

Klassen in Python: Balu der Bär

Nun gibt es zwei Baer-Objekte, beide gehören zur gleichen Klasse, sie sind gleichen Typs.

Bauen mit Parametern: Konstruktor

Allerdings ist etwas an den Bären merkwürdig. Wenn Du Dir die Python Variablen der beiden Objekte ausgeben lässt, sind sie beide gleich:

Python Klassen: Variablen der Objekte

Dennoch handelt es sich hier um zwei unterschiedliche Objekte, sie sind nur gleich schwer, gleich alt und gleich groß. Womöglich ein Zwillingspaar? Nein, das hat hier eher technische Gründe: Denn wir hatten die Werte für die Variablen im Bauplan hinterlegt, und so wird jetzt jeder neue Bär mit diesen Daten gebaut. Du kannst das Alter natürlich nach der Erzeugung des Objekts ändern:

Python Klassen: Das Alter von Balu

Aber es gibt auch einen Weg, gleich die gewünschten Objekte zu erzeugen, ohne sie im Nachhinein anpassen zu müssen: Mithilfe eines Konstruktors. Ein Konstruktor ist eine besondere Methode der Python Strings namens __init__ (mit doppelten Unterstrichen sowohl am Anfang als auch am Ende des Namens). Du rufst sie bei der Objekterzeugung auf und sie übernimmt als Argumente die Eigenschaften des Objekts. Damit lassen sich Objekte also initialisieren:

Klassen in Python: Objekte initialisieren

Der Parameter self repräsentiert die Instanz, ist also so etwas wie ein Zeiger auf sich selbst. Man kann damit innerhalb des Codes der Klasse in Python die eigenen Attribute oder Methoden benutzen. Vielleicht kennst Du die Idee aus anderen Coding-Sprachen unter dem Namen this.

Die Klasse sieht damit folgendermaßen aus:

Klassen in Python: Das Aussehen

Baer-Objekte lassen sich nun mit dem Konstruktor erzeugen:

Python Klassen: Konstruktor

Wie Du siehst, wird das Argument self dabei nicht angegeben. Die erneute Ausgabe führt nun zum gewünschten Ergebnis:

Das Argument self

Klassen in Python: Vererbung

Rund um Python Klassen gibt es eine Menge weiterer Ideen. Eine der Wichtigeren davon ist die Vererbung. Stell Dir vor, Du musst plötzlich Grizzlys und Schwarzbären programmieren. Beides sind Bären und ihre Eigenschaften und Methoden sind weitgehend gleich. Wir wissen jedoch, dass Grizzlys gut graben können. Deshalb möchten wir diese Methode gerne zufügen.

Nun könntest Du natürlich die Python Klasse Bär zweimal kopieren, in Grizzly und Schwarzbär umbenennen und beim Grizzly die Methode graben() zufügen. Du hättest danach aber eine Menge Code doppelt. Das versucht man in der Softwareentwicklung zu vermeiden, weil man Änderungen sonst auch immer an mehreren Stellen pflegen muss. Zum Glück gibt es die Vererbung. Sie ermöglicht, die neuen Klassen von Bär erben zu lassen und nur die Besonderheiten anzugeben. Doppelten Code kannst Du übrigens auch mit Python Funktionen vermeiden.

Vererbung richtig angeben

Die Python Syntax sieht folgendermaßen aus:

Vererbung angeben

Der Name der Klasse, von der geerbt wird, wird einfach in Klammern hinter dem Klassennamen angegeben. Die Klasse Grizzly lässt sich also wie folgt definieren:

Name zuordnen

Der Schwarzbär erbt auch von Bär, bekommt aber noch keine weiteren Eigenschaften oder Methoden. Vielleicht werden die später noch benötigt. Allein der neue Klassenname (also der Typ) kann schon als Begründung reichen, um die Klasse anzulegen. Du erinnerst Dich, wir wollen schließlich die Wirklichkeit nachmodellieren.

Python Klassen: Schwarzbär

Grizzly-Instanzen haben nun die neue Methode graben, Schwarzbären dagegen nicht.

Vererbung angeben

Und beide Bären erben alle Eigenschaften und Methoden von der Superklasse Baer. Im Klassendiagramm sieht das so aus:

Python Klassen: Vererbung anhand eines Diagramm darstellen
Abb. 2: Die Vererbung von Klassen in Python richtig angeben

Meistens beschreiben Klassen in Python jedoch keine Bären, sondern Fenster, Views, Dialoge oder ähnliche Objekte der Benutzerinteraktion. In dem Fall sind Eigenschaften und Verhalten nicht mehr ganz so offensichtlich wie bei einem Lebewesen, das Prinzip ist aber dasselbe. Ein Dialog hat Eigenschaften (modal oder nicht, Größe, Hintergrundfarbe) und Verhalten (etwas, das der Dialog macht oder das mit ihm gemacht werden kann). Letzteres könnte zum Beispiel das Öffnen oder Schließen des Dialogs oder auch eine Validierung der Eingaben sein – Bereiche, die Du Dir auch in Pygame zunutze machen kannst.

Python Klassen gehören zu den Grundlagen der objektorientierten Programmierung. Wenn Du Klassen definierst, erstellst Du damit die Struktur nach der ein Objekt und somit auch dein Code aufgebaut ist. Dabei verfügt jedes Objekt über Eigenschaften und Methoden. Wir wünschen Dir viel Erfolg beim Erstellen von Klassen in Python! Wenn Du schon etwas fortgeschrittener bist, kannst Du Dich ja mal an Python Anaconda probieren.

FAQs – Python Klassen

Wofür steht der Paramater „self“ bei den Python Klassen?

Der Parameter „self“ verweist innerhalb einer Klasse in Python auf das Objekt bzw. die Instanz. Er ermöglicht es dabei auf die Eigenschaften des Objekts zuzugreifen. Also worauf wartest Du noch? Auf den Python Download, fertig, los!

Was bewirkt der Destruktor innerhalb der Klassen in Python?

Der Destruktor ist der Gegenspieler zum Konstruktor, denn er entfernt oder löscht Objekte. 

Kann man verhindern, dass Objekte der Python Klassen verändert werden?

Wenn man verhindern will, dass die Variablen eines Objekts verändert werden, stehen einem zwei Möglichkeiten zur Verfügung:
Beginnt das Attribut mit genau einem Unterstrich, wird kommuniziert, dass eine Änderung verboten oder unerwünscht ist. Beginnt das Attribut jedoch mit zwei Unterstrichen, erschwert das ein Zugriff von außen noch weiter. In diesem Fall wird das Attribut private genannt.

Nichts mehr verpassen mit unserem Newsletter!

Anderen hat auch das noch gefallen