Samuel Vogel: Python: Frage zu __init__

Hallo Forum,

Ich hab in Python eine Klasse die in 2 andere Klassen verebt wird.
Die "oberste" Klasse hat eine __init__ Funktion die fuer die beiden Unterklassen gillt. Doch in einer der beiden Unterklassen wuerde ich gerne auch eine __init__ Funktion nutzen die etwas macht, was nur in dieser Unterklasse gebraucht wird, nicht jedoch in der anderen.
Jetzt ueberschreibt aber dieses __init__ in der Unterklasse das aus der "oberen" Klassen, was jedoch trotzdem ausgefuehrt werden soll...

Wie kann ich dieses Problem loesen??

so long,
Samy

  1. echo $begrüßung;

    Ich hab in Python eine Klasse die in 2 andere Klassen verebt wird.

    Es ist besser, die Geschichte mit der Vererbung andersherum zu formulieren, denn das beschreibt die Sachlage genauer. Die Basisklasse ist definiert und liegt nun einfach so rum, mehr oder weniger. Die beiden anderen Klassen erben von ihr, und um das zu tun, muss man nicht der Basisklasse etwas antun sondern den Namen der Basisklasse beim Deklarieren der neuen Klassen angeben.

    Die "oberste" Klasse hat eine __init__ Funktion die fuer die beiden Unterklassen gillt.

    Die "Unterklassen" überschreiben gleichnamige Attribute der "oberen" Klasse. Wer liegt nun oben und wer unten? Nichtsdestotrotz spricht man von Superklasse und von Unterklasse ...

    Doch in einer der beiden Unterklassen wuerde ich gerne auch eine __init__ Funktion nutzen die etwas macht, was nur in dieser Unterklasse gebraucht wird, nicht jedoch in der anderen.
    Jetzt ueberschreibt aber dieses __init__ in der Unterklasse das aus der "oberen" Klassen, was jedoch trotzdem ausgefuehrt werden soll...
    Wie kann ich dieses Problem loesen??

    So wie es bei Vererbung meist/immer(?) üblich ist. Man ruft aus der überschreibenden Methode die überschriebene Methode auf. Unter Python notiert man das, indem man den Namen der Basisklasse angibt, gefolgt von einem Punkt und dem Namen der Methode der Basisklasse.

    echo "$verabschiedung $name";

    1. Hallo,

      Es ist besser, die Geschichte mit der Vererbung andersherum zu formulieren, denn das beschreibt die Sachlage genauer. Die Basisklasse ist definiert und liegt nun einfach so rum, mehr oder weniger. Die beiden anderen Klassen erben von ihr, und um das zu tun, muss man nicht der Basisklasse etwas antun sondern den Namen der Basisklasse beim Deklarieren der neuen Klassen angeben.

      Ja war mir beim Schreiben auch aufgefallen, aber ich dachte mir man weiss ja trotzdem was gemeint ist und hab es deshalb nicht mehr umformuliert ;)

      So wie es bei Vererbung meist/immer(?) üblich ist. Man ruft aus der überschreibenden Methode die überschriebene Methode auf. Unter Python notiert man das, indem man den Namen der Basisklasse angibt, gefolgt von einem Punkt und dem Namen der Methode der Basisklasse.

      Danke, dass hatte ich gesucht... Warum bin ich da nicht selbst drauf gekommen?
      Wenn eine Methode wird, einfach "manuell" Aufrufen.

      Vielen Dank,
      Samy