PEP 354: Enumerations in Python

Terry Hancock hancock at anansispaceworks.com
Thu Mar 2 01:17:51 CET 2006


On Wed, 01 Mar 2006 12:37:26 +1100
Ben Finney <bignose+hates-spam at benfinney.id.au> wrote:
> Ben Finney <bignose+python at benfinney.id.au> writes:
> > PEP:            354
> > Title:          Enumerations in Python
> > Version:        $Revision: 42186 $
> > Last-Modified:  $Date: 2006-01-26 11:55:20 +1100 (Thu,
> > 26 Jan 2006) $
> 
> Most people seem to be unopposed or in favour of some kind
> of enumeration mechanism making it at least as far as the
> standard library.

... but not to built-ins.  That seems about right to me.

> As I understand it, the current outstanding debates are::
> 
>   * Builtin types versus stdlib module (maybe
>   'collections')
> 
>   * Ordered sequences versus unordered iterables
> 
>   * Immutable versus mutable

I suggest that both are called for, but would have different
names -- the Immutable is the actual "Enum", the mutable is
probably a "Vocabulary" or something else.

>   * Bad comparisons: raise exception versus return
>   NotImplemented

It should raise an error, because client code should use
enumerated values if enumerated values are spec'd in the
API.

>   * Terminology for each of these concepts

+ Tracing of individual "EnumValues" (or "symbols"?) to
  their enum, I should be able to interrogate a value  to
  find what enum it comes from in addition to being  able
  to interrogate an enum to find out what values  belong
  to it.

  Which is more computationally efficient will depend
  on the application, and a single application might
  do better to use each for different tasks, so I think
  it should be reversible.

+ How about documentation of enumerated values? (Where
  does the enum's __doc__ go?). One of the main values
  of using enumerated values is as an aid to documentation,
  but "WED" is still vague.  Could be "Wednesday", could
  be the "Western Education District" or short for
  "Wedding".  Enumerations are most frequently used in
  module APIs, so they are important to document.

  Obviously, the point is so that documentation tools like
  epydoc can capture the enumeration documentation.


-- 
Terry Hancock (hancock at AnansiSpaceworks.com)
Anansi Spaceworks http://www.AnansiSpaceworks.com




More information about the Python-list mailing list