Instance based:
FooEnum = Enum('FooEnum', Item(10, 'a', "Item A"), Item(20, 'b', "Item B"), )
Dynamically adding items:
FooEnum = Enum('FooEnum') FooEnum.add_item(Item(10, 'a', "Item A")) FooEnum.add_item(Item(20, 'b', "Item B"))
Simple registry pattern:
FooEnum = Enum('FooEnum') class A(Item): __enum__ = FooEnum value = 10 display = "Item A" class B(Item): __enum__ = FooEnum value = 20 display = "Item B"
Registry pattern with parent class:
FooEnum = Enum('FooEnum') class FooEnumItem(Item): __enum__ = FooEnum def display_extended(self): return "%s (%s)" % (self.display, self.value) class A(FooEnumItem): value = 10 display = "Item A" class B(FooEnumItem): value = 20 display = "Item B"