from enum import Enum # Copied from https://docs.python.org/3/library/enum.html class NoValue(Enum): def __repr__(self): return '<%s.%s>' % (self.__class__.__name__, self.name) # Adapted from https://docs.python.org/3/library/enum.html class AutoNumber(NoValue): def __new__(cls, *args): # Remove ", *args" to provoke error value = len(cls.__members__) + 1 obj = object.__new__(cls) obj._value_ = value return obj class Color(AutoNumber): def __init__(self, pantone=None): self.pantone = pantone or 'unknown' class Swatch(Color): AUBURN = ('3497') SEA_GREEN = ('1246') BLEACHED_CORAL = () # New color, no Pantone code yet!