Словарь атрибута класса, который ссылается на другие атрибуты класса в определении
Хотя есть множество способов обойти это, из-за ошибки личности я не могу ее отпустить, пока не пойму природу ошибки.
Попытка:
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
? Это потому, что оно в словаре?