I am defining models for my app and I need to a column named 'status' for various verification procedures. Here is a simplified user model.
class User id(int) name(str) status(int) # 0- New 1-Active 2-Inactive 3-Reported 4-Deleted
I asked a fellow Python developer to review my code; and he suggested that I avoided 'magic numbers'. His solution is this:
class Choices: @classmethod def get_value(cls, key): # get the string display if need to show for k, v in cls.CHOICES: if k == key: return v return "" class UserStatusChoices(Choices): NEW = 0 ACTIVE = 1 INACTIVE = 2 REPORTED = 3 DELETED = 4 CHOICES = ( (NEW, "NEW"), (ACTIVE, "ACTIVE"), (INACTIVE, "INACTIVE"), (REPORTED, "REPORTED"), (DELETED, "DELETED"), )
Couldn't I use simple dictionaries instead? Does anyone see a good reason for 'class'y solution?