Atributo de classe de dicionário que se refere a outros atributos de classe na definição
Embora existam várias maneiras de contornar isso, por causa de uma falha de personalidade, não posso deixar passar até entender a natureza do fracasso.
Tentativa:
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
Falha com:
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
Por quê? Por que ele pode encontrarUNKNOWN
mas nãoFAVE
? É porque está em uma compreensão de dicionário?