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