a = 0
b = 0
def test():
a = 1
b = 1
class Test:
print(a, b)
a = 2
test()
它提供了
0 1
我应该这样做
1 1
为什么会发生这种情况?
a = 0
b = 0
def test():
a = 1
b = 1
class Test:
print(a, b)
a = 2
test()
它提供了
0 1
我应该这样做
1 1
为什么会发生这种情况?
test
函数内部,您实际上没有初始化一个新的Test
对象,因此Python将读取类定义以在函数作用域内使用它,因此它会执行打印语句。问题在于您试图在类作用域中更改a
的值,这会导致a
获取函数定义外的先前值。
Test
中使用nonlocal a
和nonlocal b
时,它输出1,1
。希望有人能解释一下为什么。 - yudhiesh