Objektorientierung heißt virtuelles Leben im Rechner betrachten. Stellen wir uns einen vereinfachten Basiszwerg mit wenigen Eigenschaften vor:
- Name, z.B. „Hugo“ – der Datentyp ist eine Zeichenkette, also ein String, abgekürzt str,
- Alter, z.B. 31 – der Datentyp ist eine Ganzzahl, also ein Integer, abgekürzt int,
- Größe, z.B. 48,5 – der Datentyp ist eine Kommazahl, also Float.
Der Zwerg verfüge über zwei Methoden. Er kann
- altern und
- sich vorstellen.
Aufgabe 1:
Instanziere ein virtuelles Objekt der Klasse ZWERG und rufe anschließend zum Test die Methode stelle_dich_vor()
auf.
Aufgabe 2:
Die Zeit bleibt nicht stehen. Selbst für Zwerge nicht. Mit jedem Aufruf einer Methode altere()
soll der Zwerg um ein Jahr altern.
- Implementiere die Methode
altere()
, indem du sie zur KlasseZWERG
hinzufügst. – Orientiere dich dazu an der Art und Weise, wie die Methodestelle_dich_vor()
geschrieben wird. - Teste die Klasse und die Methode.
Schlüsselwörter und Besonderheiten
class
: Es leitet die Definition einer Klasse ein. Nach class
folgt in allen Fällen der Name der Klasse, hier eben ZWERG, in anderen Fällen KREIS, RECHTECK, DREIECK, usw. Klassennamen können frei gewählt werden, solange es nicht Schlüsselwörter sind. Am Ende der Zeile steht ein Doppelpunkt. Alles was zur aktuellen Klasse gehört, wird danach um einen festen Abstand eingerückt.
def
: Um eine Funktion oder eine Methode zu definieren dient das Schlüsselwort def
. Es folgen der Name der Funktion oder Methode, zwei Klammern und ein Doppelpunkt. Alles was zur aktuellen Definition gehört, wird danach um einen festen Abstand eingerückt.
self
: Dieses Wort stellt einen Bezug innerhalb einer Klasse her her. Weil ein Name häufig nur in einem bestimmten Raum, in einem bestimmten Kontext eindeutig ist, bedeutet self
soviel wie „dein eigene(r)“. Innerhalb einer Klassendefinition wird daher immer dann self geschrieben, wenn die „eigene“ Eigenschaft oder die „eigene“ Methode gemeint ist. Im oberen Beispiel etwa self.alter
oder self.stelle_dich_vor()
.
__init__
: Dieses Wort bezeichnet die Konstruktormethode einer Klasse in Python. Der Konstruktor hat immer denselben Namen.
Links:
- Videotutorial: https://www.youtube.com/watch?v=l-r9TmuWOXs
- Einführung in Textform: https://www.hdm-stuttgart.de/~maucher/Python/html/Klassen.html (Hochschule der Medien in Stuttgart)
- Nur ein anderes Tutorial: https://py-tutorial-de.readthedocs.io/de/python-3.3/classes.html
- Die Original-Dokumentation von Pyton.org in englischer Sprache: https://docs.python.org/3/tutorial/classes.html