state machine and a global variable
Bruno Desthuilliers
bdesth.quelquechose at free.quelquepart.fr
Fri Dec 14 17:06:28 EST 2007
tuom.larsen at gmail.com a écrit :
> Dear list,
> I'm writing very simple state machine library, like this:
>
>
>
> _state = None
>
> def set_state(state):
> global _state
> _state = state
>
> def get_state():
> print _surface
>
NameError here !-)
>
> but I hate to use global variable.
<aol />
> So, please, is there a better way
> of doing this? All I want is that a user has to type as little as
> possible, like:
>
> from state_machine import *
> set_state(3)
> get_state()
>
> I.e., nothing like:
> import state_machine
> my_machine = state_machine.new_machine()
> my_machine.set_state(3)
> my_machine.get_state()
A possible solution:
# state_machine.py
class _StateMachine(object):
def __init__(self):
self._state = SomethingHere()
def get_state(self):
return self._state
def set_state(self, xxx):
# etc
_s = _StateMachine()
get_state = _s.get_state()
set_state = _s.set_state()
You still have a global, but at least it's a machine instance, not it's
state !-)
Now the question is: why do you think it's so important for your users
to only see functions ? What's so wrong with:
from state_machine import *
m = get_state_machine()
m.set_state(42)
More information about the Python-list
mailing list