Vererbung: gleichbenannte super-Funktionen
Verfasst: Mittwoch 31. März 2010, 14:52
Moin,
ich hab' das Problem, das eine Sub-Klasse eine super-Funktion aufruft, die super-Funktion danach jedoch wieder zur Sub-Klasse zurückkehrt. Verwirrend, ich weiß, deswegen beschreib' ich mal, was passiert:
Ich habe zwei Klassen A und B, die prinzipiell folgendermaßen definiert sind:
Also, B erbt von A und definiert die funktionen f und g neu. In der Funktion B.f() rufe ich jetzt einfach die Funktion f der Superklasse auf. Diese Funktion ruft wiederum self.g auf, wo ich erwartet hätte, das dann die Funktion g aus der Superklasse benutzt wird.
Was aber passiert ist Folgendes:
Das heißt, das self.g innerhalb der Superklasse wieder zu Funktion g aus der Subklasse B zurückspringt. Erwartet hätte ich aber, das in diesem Fall A.g() aufgerufen wird.
Weiß da jemand Rat? Wie kann ich forcieren, dass in diesem Fall A.g() aufgerufen wird?[/code]
ich hab' das Problem, das eine Sub-Klasse eine super-Funktion aufruft, die super-Funktion danach jedoch wieder zur Sub-Klasse zurückkehrt. Verwirrend, ich weiß, deswegen beschreib' ich mal, was passiert:
Ich habe zwei Klassen A und B, die prinzipiell folgendermaßen definiert sind:
Code: Alles auswählen
class A(object):
def f(self):
print "A.f()"
self.g()
def g(self):
print"A.g()"
class B(A):
def f(self):
print "B.f()"
super(B, self).f()
def g(self):
print"B.g()"
Was aber passiert ist Folgendes:
Code: Alles auswählen
>>>a, b = A(), B()
>>>a.f()
A.f()
A.g()
>>>b.f()
A.f()
B.g()
Weiß da jemand Rat? Wie kann ich forcieren, dass in diesem Fall A.g() aufgerufen wird?[/code]