您好我對python中的變量範圍有點困惑。請好好解釋下面的片段之間的區別。UnboundLocalError:在賦值之前引用的局部變量爲什麼在這種情況下不應用LEGB規則
ⅰ)
class Test(object):
a_var = 1
def a_func(self):
self.a_var = self.a_var + 1
print(self.a_var, '[ a_var inside a_func() ]')
if __name__=='__main__':
t=Test()
t.a_func()
O/P:2內a_func a_var()]
class Test(object):
a_var = 1
def a_func(self):
a_var = a_var + 1
print(a_var, '[ a_var inside a_func() ]')
if __name__=='__main__':
t=Test()
t.a_func()
O/P:UnboundLocalError:局部變量 'a_var' 分配之前引用
爲什麼LEGB規則不適用於第二種情況,如果它不能從類別爲enclosedesope中獲得價值。好心解釋。提前致謝。
謝謝我現在很清楚,從哪裏得到這種類型的信息我在某些書中沒有找到它「這看起來很奇怪(而且是),但是你沒有在課堂上關閉,它只是在def上,LEGB中提到的「封閉」範圍只是在討論函數定義;類塊不在這裏計數。「你能否給我提供一些好文章的鏈接,我可以在類中獲得與類,變量和訪問方法以及棘手的變量初始化相關的清晰概念。謝謝 – user3256451
我添加了一個文檔參考。 – wim