Por que uma variável de classe não é definida na compreensão da lista, mas outra é?

Acabei de ler a resposta para esta pergunta:Acessando variáveis de classe a partir de uma compreensão de lista na definição de classe

Isso me ajuda a entender por que o código a seguir resulta emNameError: 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)

oNameError ocorre porquex não está definido no escopo especial para compreensão de lista. Mas não consigo entender por que o código a seguir funciona sem nenhum erro.

class A:
    x = 1
    data = [0, 1, 2, 3]
    new_data = [i for i in data]
    print(new_data)

Eu recebo a saída[0, 1, 2, 3]. Mas eu estava esperando este erro:NameError: name 'data' is not defined porque eu estava esperando, como no exemplo anterior, o nomex não está definido no escopo da compreensão da lista, da mesma forma, o nomedata não seria definido também no escopo da compreensão da lista.

Você poderia me ajudar a entender por quex não está definido no escopo da compreensão da lista, masdata é?

questionAnswers(1)

yourAnswerToTheQuestion