Skip to main content
 首页 » 编程设计

继承类方法中的Python递归

2025年05月04日12飞鱼

我有一个类和一个方法:

class Demo(dict): 
 
  def foo(self, key): 
     bar = self[key] 
     foo(bar, key) 

Demo 类接受一个dict 作为参数
从 app.py 我将 Demo 调用为:

data = { 'a': { 'a' : 123 } } 
 
Demo(data).foo('a') 

我的问题是,如何在递归时将新形成的字典 bar = self[key] 作为参数传递给 foo()?

我应该改用这个吗?:

class Demo(): 
 
  def foo(self, data, key): 
     bar = data[key] 
     foo(bar, key) 

还有其他更好的方法吗?

请您参考如下方法:

您可以改用内部递归函数:

def foo(self, key): 
    def inner(new_d): 
        bar = new_d[key] 
        inner(bar) 
 
    inner(self)  # Or whatever you want to be the initial value 

请注意它是如何在 key 上形成闭包的,这样就不需要不断地传递它了。它只能从外部范围访问。

当然这个函数并没有多大意义,因为它会永远递归,所以我假设这是一个精简的例子。