[EMAIL PROTECTED] 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) -- http://mail.python.org/mailman/listinfo/python-list