Python Unterrichtsmaterial

Klassen und Objekte

Python ist nicht eigentlich eine OO - Sprache. Das OO - Konzept ist aber wichtigster Bestandteil geworden.

Eine der besonderen Eigenschaften von Python findet man bei der Objektorientierung: Python bietet die Möglichkeit der Mehrfachvererbung. Wenn man diese nutzen will, lese man vorher in der Anleitung o.ä. nach, welche Regeln dabei zu beachten sind. Bekanntermaßen treten besondere Probleme bei Namen von Attributen und Methoden auf.

Vorteilhaft ist die sehr einfache Definition von Klassen. class leitet sie ein, es folgt der Name und in Klammern folgt die Klasse (oder eben die Klassen) von denen diese Klasse erbt.

Es folgt der Konstruktor, der mit seiner vorgegebenen Schreibweise __init__(self, ...) dem Muster vieler vordefinierter Methoden folgt.

Unangenehm ist die Kennzeichnung von Attributen durch den Bezeichner self, also self.attributname. self entspricht dem this bei Java, bezeichnet also das jeweilige Objekt. Ohne diese Angabe ist jede im Konstruktor definierte Variable nur lokal für den Konstruktor, Methoden können also nicht auf sie zugreifen. Auch bei diesen Zugriffen muss dann jeweils self.attributname geschrieben werden, anderenfalls gibt es eine Fehlermeldung.

Klassenvariable sind möglich, der Zugriff auf sie in den Methoden erfolgt mit der Angabe des Klassennamen davor.

Methoden werden -wie "normale" Funktionen/Prozeduren- mit def definiert.

Sehr ärgerlich ist, dass die Kapselung standardmäßig nicht funktioniert. Es ist also möglich, auf Attribute über Objektname.Attributname direkt zuzugreifen und zwar sowohl lesend als auch schreibend.
Siehe dazu das Beispiel:kapselungs-test-problem.py

Wie es dennoch geht, zeigt: kapselungs-test.py


Zurück zur Homepage.

© claus albowski