You can create a metaclass that would do something simple:
class MetaEnum(type): def __new__(cls, class_name, parents, attrs): def __init__(self, name=None): if name is not None: self.name = name attrs['__init__'] = __init__ Klass = type.__new__(cls, class_name, parents, attrs) if 'instances' in attrs: for name in attrs['instances']: setattr(Klass, name.capitalize(), Klass(name)) del Klass.instances
Output:
Fruit.Apple, is a Fruit named apple Fruit.Banana, is a Fruit named banana Fruit.Cranberry, is a Fruit named cranberry
martineau
source share