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
gewichtdes Objekts. - Zeile 5
- Beim Erzeugen eines Schafes wird die Eigenschaft
hungerimmer aufTruegesetzt
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üdigkeithinzu. 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üdigkeitum den Werthoursab. Der Wertmüdigkeitdarf 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!