accessing class attributes

Gary Herron gherron at islandtraining.com
Wed May 28 12:30:54 EDT 2008


eliben 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
>
> So, I've defined:
>
> class Game:
>   self.GameState = Enum('running', 'paused', 'gameover')
>   
That can't be what you've got.  But I think I can guess what you meant 
to show here.)
>   def __init__
>    ... etc
>   

Several options:

Define the Enum outside the class:
    GameState = Enum('running', 'paused', 'gameover')
then later
    class Game:
        ...
        if state == GameState.running:
            ...


Or just simply define some values
  RUNNING = 0
  PAUSED = 1
  GAMEOVER = 2
then later:
    class Game:
        ...
        if state == RUNNING:
            ...


Or try this shortcut (for the exact same effect):
  RUNNING, PAUSED, GAMEOVER = range(3)

Gary Herron






> Later, each time I want to assign a variable some state, or check for
> the state, I must do:
>
>   if state == self.GameState.running:
>
> This is somewhat long and tiresome to type, outweighing the benefits
> of this method over simple strings.
>
> 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 ?
>
> Thanks in advance
> Eli
> --
> http://mail.python.org/mailman/listinfo/python-list
>   




More information about the Python-list mailing list