Klassenvererbung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Klassenvererbung

Beitragvon HarryH » Donnerstag 19. August 2004, 07:49

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.
Gruß, Harry
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Beitragvon Christopy » Donnerstag 19. August 2004, 08:38

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)
        ...
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

re:

Beitragvon HarryH » Donnerstag 19. August 2004, 08:43

Hallo Christopy,

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

Danke!
Gruß, Harry
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Beitragvon Christopy » Donnerstag 19. August 2004, 10:02

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
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

re:

Beitragvon HarryH » Donnerstag 19. August 2004, 10:04

Alles klar. Vielen Dank!
Gruß, Harry
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Donnerstag 19. August 2004, 14:28


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder