gpt4 book ai didi

python - 静态方法和递归?

转载 作者:太空狗 更新时间:2023-10-29 17:21:30 24 4
gpt4 key购买 nike

我有以下代码:

class Foo(object):
def __init__(self):
baz=self.bar(10)

@staticmethod
def bar(n):
if n==0:
return 'bar'
else:
return bar(n-1)

bar() 作为递归函数,它需要引用自身。但是,bar() 在一个类中,调用 return bar(n-1) 将不起作用,调用 NameError: global name 'bar' is not defined。我该如何处理这种情况?我是否应该将 bar() 更改为类或实例方法,以允许访问 selfcls

最佳答案

您可以通过在类名前加上前缀来引用 bar:

class Foo(object):
def __init__(self):
baz=self.bar(10)

@staticmethod
def bar(n):
if n==0:
return 'bar'
else:
return Foo.bar(n-1)

毕竟,静态方法只不过是包含在类的命名空间中的常规函数​​。

或者,将 bar 定义为常规函数:

def bar(n):
if n==0:
return 'bar'
else:
return bar(n-1)

class Foo(object):
def __init__(self):
baz=bar(10)

这完全避免了整个问题。

关于python - 静态方法和递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13183501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com