我对 Python 不是很熟悉。所以我在编码时遇到了一些问题。
在函数块中使用函数名是很正常的,例如:
def factorial(n):
if n == 1:
return n
else:
return n * factorial(n-1)
但是当我尝试在类块中使用类名时,事情就出错了:
class Foo(object):
a = Foo
NameError: name 'Foo' is not defined
虽然下面的代码没问题:
class Foo(object):
def __init__(self):
a = Foo
print globals()
然后我使用语句调试这两个代码。我发现类块中的全局变量dict不包含class Foo
,而 __init__
功能块中的全局变量dict包含它。
因此,类名绑定似乎是在执行类块之后和执行功能块之前。
但我不喜欢在编码的基础领域进行猜测。任何人都可以对此提供更好的解释或官方材料吗?