On May 28, 12:09 pm, eliben <[EMAIL PROTECTED]> wrote: > Hello, > > I have a game class, and the game has a state. Seeing that Python has > no enumeration type, at first I used strings to represent states: > "paused", "running", etc. But such a representation has many > negatives, so I decided to look at the Enum implementation given > here:http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/413486 [...] > Is there any better way, to allow for faster access to this type, or > do I always have to go all the way ? What do other Python programmers > usually use for such "enumeration-obvious" types like state ?
I tend to use string constants defined at the module level, e.g.: ##----- in jobclass.py: # Status indicators IDLE = 'IDLE' RUNNING = 'RUNNING' FINISHED = 'FINISHED' class Job(Thread): def __init__(self): Thread.__init__(self) self.status = IDLE def run(self): self.status = RUNNING self.do_work() self.status = FINISHED [...] ##----- in another module job = jobclass.Job() job.start() while job.status == jobclass.RUNNING: print 'Job is running.' time.sleep(SLEEP_SECONDS) ##----- I've also used dummy objects, eg: ##----- class RunStatus: pass IDLE = RunStatus() RUNNING = RunStatus() FINISHED = RunStatus() ##----- I've had lots of success with these two methods. If you think an enumeration is the most appropriate way, then: ##----- RunStatuses = Enum('idle', 'running', 'finished') IDLE = RunStatuses.idle RUNNING = RunStatuses.running FINISHED = RunStatuses.finished ##----- I figure if you're only going to have a few dozen enumeration values, then don't worry about cluttering up the module namespace with variable names for constants. Geoff G-T -- http://mail.python.org/mailman/listinfo/python-list