gpt4 book ai didi

python - 变量、命名空间和类

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:57 25 4
gpt4 key购买 nike

基于以下示例,我怎么能从类中打印 var xyz,因为我一直认为该类存储在它自己的命名空间中。

xyz = 123
>>> class test:
... def __init__(self):
... pass
... def example(self):
... print xyz
...
>>> test().example()
123

谢谢

最佳答案

类不存储在它们自己的命名空间中,而是定义它们自己的命名空间,即在类内部定义的变量是局部变量,不能在类外部直接访问。但是,如果需要,类可以从全局范围访问变量。

Python 使用 LEGB 规则来查找变量的值:

L:局部作用域

E:封闭范围

G:全局范围

B:内置


LEGB 示例:

z = 3
def enclosing():
y = 2
def local_func():
x = 1
print x #fetch this from local scope
print y #fetch this from enclosing scope
print z #fetch this from global scope
print sum #fetch this from builtins
local_func()
enclosing()

输出:

1
2
3
<built-in function sum>

因此,在您的情况下,xyz 在本地范围和封闭范围内均未找到,因此使用全局范围来获取值。

范围相关:

Why am I getting an UnboundLocalError when the variable has a value?

What are the rules for local and global variables in Python?

关于python - 变量、命名空间和类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18792596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com