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?
 
     
    