Python Tutorial
- jetzt Python programmieren lernen

Variablen (Unterschied zu Eigenschaften) in Klassen nutzen

In der „normalen“ Programmierung spricht man viel über Variablen – was kann man nun in Klassen damit anstellen (es sind nicht die Eigenschaften gemeint!)

Unsere Oberklasse „Tier“ bekommt eine Variable gleich nach der Anlage der Klasse:

class Tier():
    """ Beispiel für Variablen in Klassen """
    tieranzahl = 0

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

    def anzahl_tiere(self):
        print(" aktuelle Anzahl: ", Tier.tieranzahl)

Zusätzlich können wir und die Anzahl der Tiere über die Methode „anzahl_tiere()“ ausgeben lassen.

Unsere Kindklassen „Katze“ und „Hund“ greifen auf die Variable gleich am Anfang zu und lassen diese ausgeben:

class Tier():
    """ Beispiel für Variablen in Klassen """
    tieranzahl = 0

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

    def anzahl_tiere():
        print("aktuelle Anzahl: ", Tier.tieranzahl)

class Katze(Tier):
    """ Klasse für das Erstellen von Katzen """
    print("Aus Klasse Katze: ", Tier.tieranzahl)

    def __init__(self, rufname):
        """ Initalisieren über Eltern-Klasse """
        super().__init__(rufname)

class Hund(Tier):
    """ Klasse für das Erstellen von Hunden """
    print("Aus Klasse Hund: ", Tier.tieranzahl)

    def __init__(self, rufname):
        """ Initalisieren über Eltern-Klasse """
        super().__init__(rufname)

Tier.anzahl_tiere()

Als Ergebnis erhalten wir:

Aus Klasse Katze: 0

Aus Klasse Hund: 0

aktuelle Anzahl: 0

Man sieht hier sehr schön, dass der „Kopfbereich“ der Klassen auf jeden Fall ausgeführt werden. Somit erhalten wir sofort die Aussgabe „Aus Klasse Katze: 0“ und dasselbe beim Hund. Erst dann rufen wir die Methode „Tier.anzahl_tiere()“ auf.

Wir könnten die Variable auf außerhalb direkt abfragen

print(Tier.tieranzahl)

Und natürlich können wir überall die Variable setzten (auch außerhalb der Klassen und die Anzahl innerhalb der Klasse würde sich ändern!). Einfach einmal probieren.

Tier.anzahl_tiere()
print(Tier.tieranzahl)
Tier.tieranzahl = 5
Tier.anzahl_tiere()

Nutzwert von Variablen in Klassen

Mit diesem Wissen können wir die Anzahl der generierten (sprich instanziierten Objekte) sehr einfach erfassen.

Jedes Mal, wenn wir ein neues Objekt erstellen, wird die __init__ durchlaufen. Wenn wir nun in beide (sowohl bei Hund wie Katze) dieses Variable erhöhen, können wir jederzeit die Gesamtanzahl der aktuell erstellten Objekte (sprich wieviele Hunde und Katzen gibt es insgesamt) abfragen:

class Katze(Tier):
    """ Klasse für das Erstellen von Katzen """
    print("Aus Klasse Katze: ", Tier.tieranzahl)

    def __init__(self, rufname):
        """ Initalisieren über Eltern-Klasse """
        super().__init__(rufname)
        Tier.tieranzahl += 1

Und nun basteln wir Tiere – sprich wir erzeugen Objekte in Form von einer Katze und zwei Hunden:

Tier.anzahl_tiere()
katze_schnurri = Katze("Schnurri")
print(katze_schnurri.rufname)
Tier.anzahl_tiere()

hund_bello = Hund("Bello")
print(hund_bello.rufname)
Tier.anzahl_tiere()

hund_wedler = Hund("Wedler")
print(hund_wedler.rufname)
Tier.anzahl_tiere()

Als Ausgabe erhalten wir:

aktuelle Anzahl: 0

Schnurri

aktuelle Anzahl: 1

Bello

aktuelle Anzahl: 2

Wedler

aktuelle Anzahl: 3

Zur Sicherheit der komplette Code:

class Tier():
    """ Beispiel für Variablen in Klassen """
    tieranzahl = 0

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

    def anzahl_tiere():
        print("aktuelle Anzahl: ", Tier.tieranzahl)

class Katze(Tier):
    """ Klasse für das Erstellen von Katzen """
    # print("Aus Klasse Katze: ", Tier.tieranzahl)

    def __init__(self, rufname):
        """ Initalisieren über Eltern-Klasse """
        super().__init__(rufname)
        Tier.tieranzahl += 1

class Hund(Tier):
    """ Klasse für das Erstellen von Hunden """
    # print("Aus Klasse Hunde: ", Tier.tieranzahl)

    def __init__(self, rufname):
        """ Initalisieren über Eltern-Klasse """
        super().__init__(rufname)
        Tier.tieranzahl += 1

Tier.anzahl_tiere()
katze_schnurri = Katze("Schnurri")
print(katze_schnurri.rufname)
Tier.anzahl_tiere()

hund_bello = Hund("Bello")
print(hund_bello.rufname)
Tier.anzahl_tiere()

hund_wedler = Hund("Wedler")
print(hund_wedler.rufname)
Tier.anzahl_tiere()

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Sie können uns auch eine Spende über PayPal zukommen lassen.

Bestellen Sie Bücher über folgenden Link bei Amazon:
Bücher über Python

Vielen Dank für Ihre Unterstützung