переопределить рекурсивный метод в python

Когда я вызываю рекурсивный метод базового класса из производного класса, рекурсивный вызов выполняется в отношении производного метода, а не метода базового класса. Как я могу избежать этого , не изменяя реализацию базового класса (в примере класса A)?

Вот пример

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()

У меня такой результат:

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)

Заранее спасибо,

5
задан Albert 28 July 2011 в 07:40
поделиться