Skip to content

Der Konstruktor

Objektorientiertes Programmieren

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.

python
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)
python
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 auf True 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:

python
from sheep import Sheep

shirley = Sheep(172)

shirley.befinden()
shirley.eat()
shirley.befinden()
python
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:

  1. Füge die Eigenschaft müdigkeit hinzu. Diese soll zu Beginn auf einen festen Wert gesetzt werden. Ergänze die Methode befinden().
  2. Ergänze die Methode sleep() mit einem Argument hours. Wenn man sleep(hours) aufruft, so nimmt müdigkeit um den Wert hours ab. Der Wert müdigkeit darf nicht negativ werden!
  3. Die Methode prank() soll einen Schaf-abhängigen Text ausgeben (muss beim Erzeugen des Schafs gesetzt werden) und macht das Schaf müde!
  4. 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!

Gymnasium Kirchenfeld, fts & lem