Python Tutorial
- jetzt Python programmieren lernen

Initialisieren der Klasse

Eigenschaften einer Klasse müssen Initialisiert werden. Wir wollen also die Einführung der Benennung unserer Eigenschaften, damit wir später darauf zugreifen können.

Eigenschaften der Klasse festlegen

In unserer Klasse sollen folgende Eigenschaften vorhanden sein:

Eigenschaften:

  • Farbe
  • Alter
  • Rufname

Bisher haben wir nur unseren Rumpf unserer Klasse „BauplanKatzenKlasse“ erstellt.

class BauplanKatzenKlasse():
    """ Klasse für das Erstellen von Katzen
    Hilfetext ideal bei mehreren Programmierern in
    einem Projekt oder bei schlechtem Gedächtnis """

Jetzt wollen wir unsere Eigenschaften einführen. Dazu wird ein neuer eingrückter Block erstellt, der immer den gleichen Aufruf hat: def __init__(self, …):

class BauplanKatzenKlasse():
    """ Klasse für das Erstellen von Katzen
    Hilfetext ideal bei mehreren Programmierern in
    einem Projekt oder bei schlechtem Gedächtnis """

    def __init__(self, rufname, farbe, alter):
        self.rufname = rufname
        self.farbe   = farbe
        self.alter   = alter

Unserer Methode __init__ wird immer mit 2 Unterstrichen am Anfang und am Ende geschrieben. In der Klammer kommt als erstes Argument immer „self“! Hier kommt ein wichtiges Prinzip zum Tragen, dass Klassen so stark macht.

Dazu müssen wir kurz vorgreifen und uns ein Objekt erstellen. Bauen wir unsere erste Katze mit dem Namen „Sammy“, die orange ist und 3 Jahre alt.

class BauplanKatzenKlasse():
    """ Klasse für das Erstellen von Katzen
    Hilfetext ideal bei mehreren Programmierern in
    einem Projekt oder bei schlechtem Gedächtnis """

    def __init__(self, rufname, farbe, alter):
        self.rufname = rufname
        self.farbe   = farbe
        self.alter   = alter

katze_sammy = BauplanKatzenKlasse("Sammy", "orange", 3)

__self__ verstehen (WICHTIG!)

Was passiert nun da genau? Am besten ist dies an folgender Zeichnung nachzuverfolgen:

Wenn wir das Objekt „katze_sammy“ der Klasse „BauplanKatzenKlasse“ erstellen, wird der Objektname „katze_sammy“ als erstes Argument in die „__init__(self)“ übergeben. Rufen wir dann später Attribute der Klasse ab, machen wir das wieder über unseren Objektnamen „katze_sammy“, die über „self.alter“ auf den Wert von Alter zugreift.

Erklärung zu __self__ und Ablauf beim Erstellen und Nutzen
Erklärung zu __self__ und Ablauf beim Erstellen und Nutzen

Sehr schön sieht man auch die Auswirkungen unseren bisherigen Codes beim Live-Editor (python-online-lern-editor.htm):

Eigenschaften der Klasse für das Objekt im Speicher angelegt
Eigenschaften der Klasse für das Objekt im Speicher angelegt

und in groß:

Sowohl die Klasse wie das Objekt wird erzeugt
Sowohl die Klasse wie das Objekt wird erzeugt

Jetzt können wir das Alter über unsere Instanz (sprich Objekt) „katze_sammy“ abrufen:

katze_sammy = BauplanKatzenKlasse("Sammy", "orange", 3)
print(katze_sammy.alter)

Als Rückgabewert erhalten wir:

3

Hier sieht man schön die Gewichtigkeit von self sowohl beim „Befüllen“ unsere Klasse, wie beim Erzeugen eines Objekts und letztendlich auch immer beim Abruf von Attributen (wie im Beispiel das Alter oder den Rufnamen).

Zeit zum Üben!
Aufgabe: eine Klasse für Autos erstellen

Aus didaktischen Gründen basteln wir in dieser Aufgabe eine Klasse für Autos. Das liegt nicht daran, dass Autos irgendwie wichtig wären (in der aktuellen Diskussion zur Umwelt) sondern daran, dass sich jeder etwas unter Autos vorstellen kann und dies daher griffige Beispiele ergibt.

Wer mag, darf die folgenden Beispiele auch mit Fahrrädern oder was auch immer durchführen.

Erste Überlegung:

  • wie benenne ich meine Klasse
  • welche Eigenschaften (und später Methoden) sollen meine „Autos“ bekommen?

Bitte eine Klasse erstellen mit mindestens dem Wert „Farbe“ und ein Objekt erstellen und darüber die Farbe abrufen.