enum 0.3: Enumerations in Python

Ben Finney bignose+hates-spam at benfinney.id.au
Sat Nov 26 03:36:59 CET 2005

Howdy all,

I've uploaded enum 0.3 to the Cheeseshop.


Enumerations are now sequences, iterable (as before) *and* indexable::

    >>> from enum import Enum
    >>> Weekdays = Enum('sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat')
    >>> pizza_night = Weekdays[4]
    >>> print pizza_night == Weekdays.thu

Since the values of an enumeration are directly reflected in the
values and attributes, Enum instances are immutable to preserve this

    >>> Weekdays.foo = object()
    enum.EnumImmutableError: Enumeration does not allow modification
    >>> Weekdays.mon = Weekdays.fri
    enum.EnumImmutableError: Enumeration does not allow modification
    >>> Weekdays[4] = object()
    enum.EnumImmutableError: Enumeration does not allow modification

The package's long description:

"""This package provides a class for robust enumerations in Python.

An enumeration object is created with a sequence of string
arguments to the Enum() function::

    >>> from enum import Enum
    >>> Colours = Enum('red', 'blue', 'green')
    >>> Weekdays = Enum('mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun')

The return value is an immutable sequence object with a value for each
of the string arguments. Each value is also available as an attribute
named from the corresponding string argument::

    >>> pizza_night = Weekdays[4]
    >>> pixel_colour = Colours.blue

The values are constants that can be compared only with other values
from the same enumeration, but can be coerced to simple strings
matching the original arguments to Enum().

The design is based in part on Zoran Isailovski's recipe, "First
Class Enums in Python" in the ASPN Python Cookbook

 \       "I bought some batteries, but they weren't included; so I had |
  `\                             to buy them again."  -- Steven Wright |
_o__)                                                                  |
Ben Finney

More information about the Python-list mailing list