请考虑:
class Foo:
a = 1
def bar():
print(a)
按照作用域规则,我期望在方法中可以使用变量a
:首先查找本地作用域,然后是封闭作用域……
类Foo
创建了一个命名空间和作用域,不是吗?
bar
创建了一个作用域;它不是被类的作用域所包含吗?在bar
的作用域中没有定义变量a
,因此我期望它从封闭作用域中获取类变量。
显然,我对命名空间和作用域感到困惑。我已经尝试阅读相关资料,但还没有找到关于这个特定问题的明确解释(当然,self.a
是有效的)。
Foo.a
而不是a
。 - Simpom