我有一个类和一个方法:
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 上形成闭包的,这样就不需要不断地传递它了。它只能从外部范围访问。
当然这个函数并没有多大意义,因为它会永远递归,所以我假设这是一个精简的例子。
