Why is a class variable not accessible from a method?(为什么不能从方法访问类变量?)
本文介绍了为什么不能从方法访问类变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
考虑:
class Foo:
a = 1
def bar():
print(a)
我希望a
通过限定规则作用域对该方法可用:首先是本地,然后是封闭.
类Foo
创建命名空间和作用域,不是吗?
bar
创建一个作用域;它不是包含在类的作用域中吗?bar
的作用域中没有定义a
,所以我希望它从封闭的作用域中提取类变量。
显然,我对名称空间和作用域感到困惑。我试着阅读了这方面的资料,但没有找到关于这一点的明确说明(当然,self.a
是有效的)。
推荐答案
类主体不是嵌套作用域,No。PythonExecution Model显式排除它:
在类挡路中定义的名称的范围仅限于类挡路;它不会扩展到方法的代码块
这是因为类的主体被执行以形成类属性;将其视为具有局部变量的函数,并且局部变量将成为新类对象的属性。
然后,您可以直接在类(Foo.a
)上访问这些属性,也可以通过实例访问这些属性(其中属性查找通过类)。
这篇关于为什么不能从方法访问类变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:为什么不能从方法访问类变量?


猜你喜欢
- 沿轴计算直方图 2022-01-01
- 如何在 Python 的元组列表中对每个元组中的第一个值求和? 2022-01-01
- python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令 2022-01-01
- padding='same' 转换为 PyTorch padding=# 2022-01-01
- python-m http.server 443--使用SSL? 2022-01-01
- pytorch 中的自适应池是如何工作的? 2022-07-12
- 如何将一个类的函数分成多个文件? 2022-01-01
- 如何在 python3 中将 OrderedDict 转换为常规字典 2022-01-01
- 使用Heroku上托管的Selenium登录Instagram时,找不到元素';用户名'; 2022-01-01
- 分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data; 2022-01-01