【发布时间】:2013-11-06 12:03:33
【问题描述】:
我对 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() 语句调试这两个代码。我发现class block中的全局变量dict不包含class Foo,而__init__function block中的全局变量dict包含它。
看来类名绑定是在class block执行之后,function block执行之前。
但我不喜欢在编码的基础领域进行猜测。任何人都可以提供更好的解释或官方材料吗?
【问题讨论】:
-
您在第一个示例中没有看到递归。
-
是的,我明白了。我说用起来很正常。该代码计算阶乘。