Kiedy wywołuję metodę rekurencyjną klasy bazowej z klasy pochodnej, wywołanie rekursywne jest wykonywane względem metody pochodnej, zamiast metody klasy bazowej. Jak mogę uniknąć tego bez modyfikowania implementacji klasy podstawowej (na przykład w klasie A)?Zastępowanie metody rekursywnej w pythoniu
Oto przykład
class A(object):
# recursive method
def f(self, x):
print x,
if x < 0:
self.f(x+1)
if x > 0:
self.f(x-1)
if x == 0:
print ""
class B(A):
# Override method
def f(self):
# do some pretty cool stuff
super(B, self).f(25)
if __name__ == "__main__":
A().f(5)
B().f()
Mam tego wyjścia:
5 4 3 2 1 0
25
Traceback (most recent call last):
File "./test.py", line 19, in <module>
B().f()
File "./test.py", line 15, in f
super(B, self).f(25)
File "./test.py", line 9, in f
self.f(x-1)
TypeError: f() takes exactly 1 argument (2 given)
Dzięki z góry,
Wystarczy zmienić nazwę swojej funkcji ... – JBernardo