Почему одна переменная класса не определена в понимании списка, а другая?

Я просто прочитал ответ на этот вопрос:Доступ к переменным класса из списка понимания в определении класса

Это помогает мне понять, почему следующий код приводит кNameError: 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)

NameError происходит потому, чтоx не определен в специальной области для понимания списка. Но я не могу понять, почему следующий код работает без каких-либо ошибок.

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

Я получаю вывод[0, 1, 2, 3], Но я ожидал эту ошибку:NameError: name 'data' is not defined потому что я ожидал, как и в предыдущем примере, имяx не определен в области понимания списка, так же как и названиеdata не будет определен слишком в области понимания списка.

Не могли бы вы помочь мне понять, почемуx не определяется в области понимания списка, ноdata является?

Ответы на вопрос(1)

Ваш ответ на вопрос