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:
pass
Die 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:
pass
Hinweis: 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
self
ist bei Methoden immer das erste Argument.- Beim Aufruf der Methode entspricht
self
dem 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
sleep
ein. 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.