Warum ist eine Klassenvariable im Listenverständnis nicht definiert, eine andere?
Ich habe gerade die Antwort auf diese Frage gelesen:Zugriff auf Klassenvariablen aus einem Listenverständnis in der Klassendefinition
Es hilft mir zu verstehen, warum der folgende Code ergibtNameError: name 'x' is not defined
:
class A:
x = 1
data = [0, 1, 2, 3]
new_data = [i + x for i in data]
print(new_data)
DasNameError
tritt auf, weilx
ist nicht im speziellen Geltungsbereich für das Listenverständnis definiert. Ich kann jedoch nicht verstehen, warum der folgende Code fehlerfrei funktioniert.
class A:
x = 1
data = [0, 1, 2, 3]
new_data = [i for i in data]
print(new_data)
Ich bekomme die Ausgabe[0, 1, 2, 3]
. Aber ich habe diesen Fehler erwartet:NameError: name 'data' is not defined
weil ich genau wie im vorigen beispiel den namen erwartet habex
wird im Umfang des Listenverständnisses nicht definiert, ebenso der Namedata
würde nicht auch im Umfang des Listenverständnisses definiert.
Könnten Sie mir bitte helfen, zu verstehen, warumx
wird im Umfang des Listenverständnisses aber nicht definiertdata
ist?