Hallo, ich bin etwas verwirrt über die Festlegung von Variablen in Python. Bitte erklären Sie den Unterschied zwischen den folgenden Snips.UnboundLocalError: Lokale Variable, die vor der Zuweisung referenziert wurde, warum die LEGB-Regel in diesem Fall nicht angewendet wurde
i)
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_var innen a_func()]
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: lokale Variable 'a_var' vor der Zuweisung referenzierten
Warum wird die LEGB-Regel nicht im zweiten Fall angewendet, wenn sie keinen Wert von enclosedesope erhält, der Klasse ist. bitte erklären. Danke im Voraus.
Dank jetzt bin ich klar, woher du diese Art von Informationen habe ich fand es nicht in einigen Büchern "Das mag seltsam erscheinen (und es ist), aber Sie bekommen keine Schließung über die Klasse , es ist nur über def. Der "umschließende" Bereich, auf den in LEGB Bezug genommen wird, spricht nur über Funktionsdefinitionen; Klassenblöcke zählen hier nicht. " Kannst du mir einen Link zu einigen guten Artikeln geben, wo ich ein klares Konzept bezüglich Klassen, Variablen und Zugriffsmethoden und trickreiche varible-Initialisierung innerhalb der Klasse bekommen kann. Danke – user3256451
Ich habe eine Docs-Referenz hinzugefügt. – wim