a = 0
b = 0
def test():
a = 1
b = 1
class Test:
print(a, b)
a = 2
test()
Run Code Online (Sandbox Code Playgroud)
它给
0 1
Run Code Online (Sandbox Code Playgroud)
它应该是
1 1
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
小智 0
在函数内部test,您实际上并没有初始化一个新Test对象,因此 Python 将读取类定义以在函数作用域内使用它,因此它会执行 print 语句。问题是您试图更改类范围内的值,这会导致采用函数定义之外a的先前值。a