出于某些原因,当出现这样的情况时,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)