Stavolta la faccio breve, mi capita ogni tanto di dovere ricorrere ad un tipo che ricordi gli enum del C con l'associazione numerica delle chiavi, una versione basica (dove gli indici sono progressivi senza poterne settare i valori) potrebbe essere:
class Enum(): def __init__(self, a_list): self.a_list = a_list def __getattr__(self, name): if name in self.a_list: return self.a_list.index(name) raise AttributeError
l'uso è assai semplice:
Colors = Enum(['red', 'white', 'green', 'orange']) print Colors.white # 1 :-)
Commenti