On 5 April 2012 19:45, Alex Ogier <alex.og...@gmail.com> wrote: > >> >> class User(models.Model): >> >> MALE = 0 >> >> FEMALE = 1 >> >> GENDERS = [(MALE, 'Male'), (FEMALE, 'Female')] >> >> gender = models.IntegerField(choices=GENDERS) >> >> >> >> def greet(self): >> >> return {MALE: 'Hi, boy', FEMALE: 'Hi, girl.'}[self.gender] >> >> >> >> I' sure you meant: >> >> def greet(self): >> return {self.MALE: 'Hi, boy', self.FEMALE: 'Hi, girl.'}[self.gender] >> >> Unless you defined MALE/FEMALE as globals too :) Otherwise you'll get >> a NameError. >> >> -- >> Łukasz Rekucki > > As attributes of the class object I'm pretty sure they are in scope. No > NameErrors there. >
That's not how it works. Code that executes when creating a new class does not define a lexical scope. There is no such thing as "class scope". Try it yourself: http://ideone.com/xbr0q -- Łukasz Rekucki -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-developers@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.