繁体   English   中英

python类变量可以从类方法访问?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM