What do you use as symbols for Python ?

Scott David Daniels scott.daniels at acm.org
Fri Nov 11 12:48:24 EST 2005


Sion Arrowsmith wrote:
...
> 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, ...

Or use a function like:

def named(value, classes):
     for klass in classes:
         for name, val in vars(klass).iteritems():
             if val == value:
                 return name
     raise ValueError, "No names for %r in %s" (value, classes)

Remember CPU time is almost free when it is associated with a line
typed to a user paying attention.  This way you (A) don't have
to repeat the names in the source (a great place for errors),
and (B) you can say to yourself, "I think this is in one of these
several things" and go hunting happily.

In our example, named(2, [State]) gives us "ERROR"

-- 
-Scott David Daniels
scott.daniels at acm.org



More information about the Python-list mailing list