[英]python class variable accessible from class method?
我离开python已有一段时间了。 我很快就违反了我的理解。 考虑:
class Foo:
a = 1
def bar():
print(a)
我期待a
可用的方法,通过作用域规则:本地,然后再封闭,...
Foo
类创建一个名称空间和一个范围,不是吗? bar
创建一个范围; 它不包含在课程范围内吗? 没有a
在范围定义bar
,所以预计它拿起从封闭范围的类变量。 显然,我对名称空间和范围感到困惑。 我已尝试阅读此书,但未能就此特定问题找到确切的说明。 ( self.a
可以工作)
类主体不是可嵌套的作用域,不是。 Python 执行模型明确排除了它:
在类块中定义的名称范围仅限于该类块。 它不会扩展到方法的代码块
这是因为执行类的主体以形成类属性; 将其视为具有locals的功能,并且locals成为新类对象的属性。
然后,您可以直接在类( Foo.a
)上或通过实例(其中属性查找属于该类)访问这些属性。
class Foo:
def __init__(self):
self.a = 1
def bar(self):
print(self.a)
通过使用__init__()
您将能够将变量传递给其他函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.