Словарь атрибута класса, который ссылается на другие атрибуты класса в определении

Хотя есть множество способов обойти это, из-за ошибки личности я не могу ее отпустить, пока не пойму природу ошибки.

Попытка:

class OurFavAnimals(object):
    FAVE = 'THATS ONE OF OUR FAVORITES'
    NOTFAVE = 'NAH WE DONT CARE FOR THAT ONE'
    UNKNOWN = 'WHAT?'
    FAVES = defaultdict(lambda: UNKNOWN, {x:FAVE for x in ['dog', 'cat']})
    FAVES['Crab'] = NOTFAVE 

Сбой с:

      3     NOTFAVE = 'NAH WE DONT CARE FOR THAT ONE'
      4     UNKNOWN = 'WHAT?'
----> 5     FAVES = defaultdict(lambda: UNKNOWN, {x:FAVE for x in ['dog', 'cat']})
      6     FAVES['Crab'] = NOTFAVE

NameError: global name 'FAVE' is not defined

Зачем? Почему он может найтиUNKNOWN но нетFAVE? Это потому, что оно в словаре?

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

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