小编min*_*leg的帖子

类定义中的变量范围令人困惑

出于某些原因,当出现这样的情况时,python从全局命名空间中获取变量:

class Cls:
    foo = foo
Run Code Online (Sandbox Code Playgroud)

请看这段代码:

foo = 'global'

def func0():
    foo = 'local'
    class Cls:
        bar = foo
    print('func0', Cls.bar)
 func0()
 # func0 local

def func1():
    foo = 'local'
    class Cls:
        foo = foo
    print('func1', Cls.foo)
func1()
# func1 global

def func2():
    foo = 'nonlocal'
    def internal():
        class Cls:
            foo = foo
        print('func2.internal', Cls.foo)
    internal()
func2()
# func2.internal global

def func3():
    foo = 'local'
    class Cls:
        bar = foo
        foo = foo
    print('func3', Cls.bar, Cls.foo)
func3()
# func3 …
Run Code Online (Sandbox Code Playgroud)

python scope namespaces python-2.7 python-3.x

5
推荐指数
1
解决办法
69
查看次数

标签 统计

namespaces ×1

python ×1

python-2.7 ×1

python-3.x ×1

scope ×1