小编Alb*_*ert的帖子

覆盖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()
Run Code Online (Sandbox Code Playgroud)

我有这个输出:

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, …
Run Code Online (Sandbox Code Playgroud)

python recursion inheritance overriding

5
推荐指数
1
解决办法
957
查看次数

标签 统计

inheritance ×1

overriding ×1

python ×1

recursion ×1