Почему этот код python демонстрирует странные правила

Я работаю на Python 2.7.8 (Anaconda Distribution), и этот код не работает. Это похоже на ошибку в реализации Python, но я ничего не пропустил?

class C:
    x = {2 : 1}
    y = {w for w in x if x[w]==1}

Запуск этого кода дает следующее сообщение об ошибке:

NameError: глобальное имя 'x' не определено

Сообщение об ошибке также кажется мне неправильным.

Обратите внимание, что следующие два очень похожих фрагмента кода работают без проблем:

# this works fine:
class C:
    x = {2 : 1}
    y = [w for w in x if x[w]==1]


# this works fine too:
x = {2 : 1}
y = {w for w in x if x[w]==1}