Gary Herron <[EMAIL PROTECTED]> wrote:
>Another similar approach that keeps those values together in a single
>namespace is this (my favorite):
>
> class State:
> OPENED, CLOSED, ERROR = range(3)
>
>Then you can refer to the values as
> State.OPENED
> State.CLOSED
> State.ERROR
>
>The extra clarity (and slight wordiness) of the dotted notation seems,
>somehow, quite Pythonic to me.
I have here an implementation (written by a colleague) of a whole pile
of such -- in this particular case it's helpful to do it in this style
rather than the class OPENED: pass because the values are coming from/
going to a database. And it goes a little further, with
class State:
Enum = range(3)
OPENED, CLOSED, ERROR = Enum
Names = { OPENED: "OPENED", CLOSED: "CLOSED", ERROR: "ERROR" }
so you can used State.Names[state] to provide something user-readable,
and state in State.Enum to check data consistency. (OK, that probably
doesn't make much sense with this particular State, but it does when
your getting value-as-number from an external source.)
--
\S -- [EMAIL PROTECTED] -- http://www.chaos.org.uk/~sion/
___ | "Frankly I have no feelings towards penguins one way or the other"
\X/ | -- Arthur C. Clarke
her nu becomeþ se bera eadward ofdun hlæddre heafdes bæce bump bump bump
--
http://mail.python.org/mailman/listinfo/python-list