¿Por qué una variable de clase no está definida en la comprensión de la lista, pero otra sí?
Acabo de leer la respuesta a esta pregunta:Acceso a variables de clase desde una comprensión de la lista en la definición de clase
Me ayuda a entender por qué el siguiente código da como resultadoNameError: 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)
losNameError
ocurre porquex
no está definido en el alcance especial para la comprensión de la lista. Pero no puedo entender por qué el siguiente código funciona sin ningún error.
class A:
x = 1
data = [0, 1, 2, 3]
new_data = [i for i in data]
print(new_data)
Me sale la salida[0, 1, 2, 3]
. Pero esperaba este error:NameError: name 'data' is not defined
porque esperaba como en el ejemplo anterior el nombrex
no está definido en el alcance de la comprensión de la lista, de manera similar, el nombredata
no se definiría también en el alcance de la comprensión de la lista.
¿Podrías ayudarme a entender por qué?x
no está definido en el alcance de la comprensión de la lista perodata
¿es?