Seite 1 von 1

Klassenvererbung

Verfasst: Donnerstag 19. August 2004, 07:49
von HarryH
Hallo,

Ich habe mal eine kurze Frage zur Vererbung. Kann man eine Methode in einer Klasse auch erweitern? z.B. das man der __init__-Methode bei der Vererbung etwas hinzufügt und dabei das Bestehende unverändert bleibt.

Verfasst: Donnerstag 19. August 2004, 08:38
von Christopy
Du kannst in einer vererbten Klasse den Konstruktor der Superklasse explizit aufrufen. Anschließend kannst Du Deine Erweiterungen machen. Folgend ein Codeschnipsel aus einem von wxGlade erzeugten Programmes:

Code: Alles auswählen

class DlgTest(wxFrame): 
    def __init__(self, *args, **kwds): 
        wxFrame.__init__(self, *args, **kwds)
        ...

re:

Verfasst: Donnerstag 19. August 2004, 08:43
von HarryH
Hallo Christopy,

Geht das auch mit den anderen Methoden? Und was ist eine Superklasse?

Danke!

Verfasst: Donnerstag 19. August 2004, 10:02
von Christopy
Die Superklasse ist die Klasse von der abgeleitet (geerbt) wird.
Die abgeleitete Klasse erbt alle Funktionen der Superklasse. Diese Funktionen kannst Du in der abgeleiteten Klasse überschreiben indem Du sie einfach neu anlegst. Dabei kannst Du die Methoden der Superklasse aufrufen.
Einfaches Beispiel:

Code: Alles auswählen

class A:
    def test(self):
        print "A"

class B(A):
    def test(self):
        print "B"

class C(A):
    def test(self):
        A.test(self)
        print "C"
    
a = A()
b = B()
c = C()

a.test()
b.test()
c.test()

>test.py
A
B
A
C

re:

Verfasst: Donnerstag 19. August 2004, 10:04
von HarryH
Alles klar. Vielen Dank!

Verfasst: Donnerstag 19. August 2004, 14:28
von Milan