Am Besten definiert man eine eigene Klasse in einer separaten Datei. Meist benennt man diese gleich wie die Klasse, einfach klein-geschrieben, also z.B. sheep.py.
Die einfachste Python-Klasse sieht wie folgt aus:
class Sheep:
passDie Klasse wird mit dem Schlüsselwort class definiert. Sie hat einen Namen (hier Sheep). Klassennamen schreibt man zur Unterscheidung von Variablen gross.
Aufgabe: Klasse
Erstelle eine Datei sheep.py und speichere den obenstehenden Inhalt ab.
Unsere Klasse Sheep hat weder Eigenschaften noch Methoden. Ihr einziger Inhalt besteht in der Anweisung pass, die nichts tut, sondern da sein muss, weil Python keine wirklich leeren Klassen zulässt.
Nichtsdestotrotz können wir die Klasse verwenden. Dazu müssen wir diese importieren. Wir nehmen an die Klasse Sheep sei in der Datei sheep.py im selben Verzeichnis wie untenstehendes Testprogramm main.py abgespeichert. So können wir diese importieren und verwenden:
from sheep import Sheep
shaun = Sheep()
timmy = Sheep()class Sheep:
pass- Zeilen 3 & 4
- wir erzeugen ein neues Objekt der Klasse
Sheep
Eigenschaften
Mit der Punktnotation können wir nun auf die Eigenschaften der Objekte zugreifen: wir können dafür Werte setzen und vorhandene Werte auslesen
from sheep import Sheep
shaun = Sheep()
timmy = Sheep()
shaun.age = 17
timmy.age = 3
diff = shaun.age - timmy.age
print("Shaun ist", diff, "Jahr älter als Timmy")class Sheep:
passHinweis: Punktnotation
Methoden und Eigenschaften eines Objektes rufen wir mit der Punktnotation auf!
Methoden
Methoden werden wie Funktionen/Unterprogramme definiert – allerdings in der Klasse drin. Somit gehören Methoden zum aus der Klasse erzeugten Objekt und haben auch Zugriff auf die Eigenschaften des Objektes.
class Sheep:
def eat(self):
print("mampf")from sheep import Sheep
shirley = Sheep()
shirley.eat()- Zeilen 3 & 4
- wir definieren die Methode
eat - momentan steht darin nur ein
print
Hinweis: self
selfist bei Methoden immer das erste Argument.- Beim Aufruf der Methode entspricht
selfdem aktuellen Objekt.
Im obigen Beispiel kann also die Methode eat(), wenn aufgerufen als shirley.eat() mittels self auf shirley zugreifen!
Methoden und Eigenschaften
Spannend wird es, wenn die Methoden auf Eigenschaften des Objektes zugreifen oder diese gar ändern.
class Sheep:
def eat(self):
print("mampf")
self.hunger = False
self.gewicht = self.gewicht + 1
def befinden(self):
print(" gewicht:", self.gewicht)
print(" hunger:", self.hunger)from sheep import Sheep
shirley = Sheep()
shirley.gewicht = 172
shirley.hunger = True
shirley.befinden()
shirley.eat()
shirley.befinden()Aufgabe: Methoden
- Übernimm das obenstehende Beispiel und teste es
- Bau eine weitere Methode
sleepein. Diese soll ein Schlafgeräusch ausgeben und danach ist der Hunger wieder da - rufe die Methode auf
Warnung: Eigenschaften ohne Werte
Methoden, welche auf Eigenschaften zugreifen, können dies erst tun, wenn diese Eigenschaften entsprechende Werte haben.
Zusatzaufgabe: Streich spielen
Bau eine Methode prank ein. Dabei soll ein vom Schaf abhängiger Text ausgegeben werden (nicht jedes Schaf macht denselben Streich).
Das Schaf wird dabei etwas leichter.