Incrementing an intstance attribute vs incrementing global attributes (scope)
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class blah(object): def __init__(self): self.x=5 blahinstance=blah() def testclass(): blahinstance.x+=1 print blahinstance.x testclass() #blah will be incremented print blahinstance.x #the incremented value holds after function exit "------------------------------------------------------------------------------------" x=5 def test(): x+=1 print x print x test() #fails because ref before assignemnt |
因此,我们已经对局部作用域内的全局变量进行了读访问和修改访问,但是显然,尝试重新分配只会创建与全局变量同名的局部变量。在上面的例子中,引用不在函数范围内的实例属性
为了澄清-我完全理解第二个例子,以及全局与局部范围。我不明白的是为什么第一个会起作用,因为它看起来和第二个相似。这是因为实例对象及其属性是可变的,并且我们在本地范围内对全局具有读取/修改访问权限吗?
裸名称不同于属性引用。
没有名字
"分配前引用的局部变量"业务仅在分配给变量(即裸名称)时才起作用,而不是属性引用、项引用或其他任何内容。在这方面,