Dictionary-Klassenattribut, das auf andere Klassenattribute in der Definition @ verwei

Während es zahlreiche Möglichkeiten gibt, kann ich es aufgrund eines Persönlichkeitsfehlers nicht loslassen, bis ich die Natur des Fehlers verstanden habe.

Versuch:

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 

Scheitert mit:

      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

Warum? Warum kann es @ findUNKNOWN aber nichtFAVE? Liegt es daran, dass es sich um ein Wörterbuch handelt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage