enum 0.3: Enumerations in Python

Ben Finney bignose+hates-spam at benfinney.id.au
Fri Nov 25 21:36:59 EST 2005


Howdy all,

I've uploaded enum 0.3 to the Cheeseshop.

    <URL:http://cheeseshop.python.org/pypi/enum/>

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
    True

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

    >>> 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
<URL:http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/413486>.
"""

-- 
 \       "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