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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage