Oft möchte man gleich beim Erstellen des Objektes gewisse Eigenschaften festlegen, entweder weil sie für jedes Objekt gleich sind oder weil sie zwingend einen Wert haben müssen.
So greifen die Methoden der Klasse Sheep
auf die Eigenschaften gewicht
und hunger
zu. Wenn diese nicht gesetzt sind, dann gibt das einen Fehler.
Wir möchten also für jedes neue Schaf den Wert hunger
auf True
setzen und ein Anfangsgewicht mitgeben.
Beides können wir mit der speziellen Methode __init__()
– genannt Konstruktor – erreichen. Diese wird beim Erzeugen eines Objektes automatisch aufgerufen. Dabei werden die Argumente direkt übergeben.
class Sheep:
def __init__(self, anfangsgewicht):
self.gewicht = anfangsgewicht
self.hunger = True
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(172)
shirley.befinden()
shirley.eat()
shirley.befinden()
- Zeile 3 & 4
- Der Konstruktor nimmt das Anfangsgewicht als Argument entgegeben und setzt damit die Eigenschaft
gewicht
des Objekts. - Zeile 5
- Beim Erzeugen eines Schafes wird die Eigenschaft
hunger
immer aufTrue
gesetzt
So haben wir sichergestellt, dass alle Eigenschaften einen Wert haben: Alle Schafe haben Hunger, aber nicht alle das selbe Anfangsgewicht – dieses müssen wir beim Erzeuzgen des Schafes setzen:
from sheep import Sheep
shirley = Sheep(172)
shirley.befinden()
shirley.eat()
shirley.befinden()
class Sheep:
def __init__(self, anfangsgewicht):
self.gewicht = anfangsgewicht
self.hunger = True
def eat(self):
print("mampf")
self.hunger = False
self.gewicht = self.gewicht + 1
def befinden(self):
print(" gewicht:", self.gewicht)
print(" hunger:", self.hunger)
- Zeile 3
- Beim Erzeugen eines Schafes müssen wir jetzt das Anfangsgewicht als Argument übergeben
Aufgabe
Erweitere die Klasse Sheep
wie folgt:
- Füge die Eigenschaft
müdigkeit
hinzu. Diese soll zu Beginn auf einen festen Wert gesetzt werden. Ergänze die Methodebefinden()
. - Ergänze die Methode
sleep()
mit einem Argumenthours
. Wenn mansleep(hours)
aufruft, so nimmtmüdigkeit
um den Werthours
ab. Der Wertmüdigkeit
darf nicht negativ werden! - Die Methode
prank()
soll einen Schaf-abhängigen Text ausgeben (muss beim Erzeugen des Schafs gesetzt werden) und macht das Schaf müde! - Rufe die neuen Methoden auf und teste sie, indem du das Schaf nach seinem befinden fragst.
Zusatzaufgabe: Eigene Ideen
Hast du eigene Ideen für weitere Methoden/Eigenschaften? Kopiere deine Dateien und lass deiner Fantasie freien Lauf!