状态机和全局变量 [英] state machine and a global variable
问题描述
亲爱的名单,
我正在编写非常简单的状态机库,如下所示:
_state =无
>
def set_state(州):
global _state
_state = state
def get_state():< br $> b $ b print _surface
但是我讨厌使用全局变量。那么,拜托,有没有更好的方式
这样做?我想要的是用户必须输入尽可能少的价格,例如:
来自state_machine import的
*
set_state (3)
get_state()
也就是说:
import state_machine
my_machine = state_machine.new_machine()
my_machine.set_state(3)
my_machine.get_state()
先谢谢!
2007年12月14日上午10:52,< tu ********* @ gmail.comwrote:
亲爱的清单,
我正在编写非常简单的状态机库,如下所示:
_state =无
def set_state(州):
global _state
_state = state
>
def get_state():
print _surface
但我讨厌使用全局变量。那么,拜托,有没有更好的方式
这样做?我想要的是用户必须输入尽可能少的价格,例如:
是的,不要这样做。
from state_machine import *
set_state(3)
get_state()
这不是状态机,它只是状态
即,没有类似:
import state_machine
my_machine = state_machine.new_machine()
my_machine.set_state(3)
my_machine.get_state()
不要害怕对象,特别是如果你的恐惧是由于b
稻草人C风格API引起的。
来自state_machine import状态
州=州()
打印state.current_state
state.do_something(''sadfsafsad '')#出一些基于当前状态的东西
print state.current_state
12月14日,8:5凌晨2点,tuom.lar ... @ gmail.com写道:
亲爱的清单,
我写的很简单机器库,像这样:
_state =无
def set_state(州):
global _state < br $>
_state = state
def get_state():
print _surface
但是我讨厌使用全局变量。那么,拜托,有没有更好的方式
这样做?我想要的是用户必须输入尽可能少的价格,例如:
来自state_machine import的
*
set_state (3)
get_state()
也就是说:
import state_machine
my_machine = state_machine.new_machine()
my_machine.set_state(3)
my_machine.get_state()
先谢谢!
就个人而言,我会以第二种方式做到这一点。这似乎是最合适的方式。但是,你可以通过第二种方式实现,
仍然可以获得你想要的功能。
[state_machine.py中的代码]
class StateMachine (对象):
def __init __(self,state = None):
如果state为None:
state =" DEFAULT_INIT_STATE"
self._state =州
def get_state(个体经营):
#print self._surface
return self._state
def set_state(self,state):
self._state = state
_sm = StateMachine()
set_state = _sm.set_state
get_state = _sm.get_state
[/ code]
>
Matt
12月14日下午7:35,Matimus< mccre ... @ gmail.comwrote:
12月14日上午8:52,tuom.lar ... @ gmail.com写道:
亲爱的清单,
我正在编写非常简单的状态机库,如下所示:
_state = None
def set_state(state):
global _state
_state = state
def get_state():
print _surface
但我讨厌使用全局变量。那么,拜托,有没有更好的方式
这样做?我想要的只是用户必须输入尽可能少的
,例如:
from state_machine import *
set_state(3)
get_state()
也就是说:
import state_machine
my_machine = state_machine.new_machine()
my_machine.set_state(3)
my_machine.get_state()
先谢谢!
就个人而言,我会以第二种方式做到这一点。这似乎是最合适的方式。但是,你可以通过第二种方式实现,
仍然可以获得你想要的功能。
[state_machine.py中的代码]
class StateMachine(object):
def __init __(self,state = None):
如果state为None:
state =" ; DEFAULT_INIT_STATE"
self._state = state
def get_state(self):
#print self._surface
返回self._state
def set_state(self,state):
self._state = state
_sm = StateMachine()
set_state = _sm.set_state
get_state = _sm.get_state
[/ code]
马特
非常感谢!这正是我的想法。
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
but I hate to use global variable. 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()
Thanks, in advance!
On Dec 14, 2007 10:52 AM, <tu*********@gmail.comwrote: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
but I hate to use global variable. 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:
Yes, don''t do it.
from state_machine import *
set_state(3)
get_state()
This isn''t a state machine, it''s just state
I.e., nothing like:
import state_machine
my_machine = state_machine.new_machine()
my_machine.set_state(3)
my_machine.get_state()
Stop being afraid of objects, especially if your fear is caused by
straw-man C style APIs.
from state_machine import State
state = State()
print state.current_state
state.do_something(''sadfsafsad'') #does something based on the current state
print state.current_state
On Dec 14, 8:52 am, tuom.lar...@gmail.com wrote: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
but I hate to use global variable. 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()
Thanks, in advance!Personally I _would_ do it the second way. That seems to be the most
appropriate way to do it. However, you can do it the second way and
still get the functionality you desire.
[code in state_machine.py]
class StateMachine(object):
def __init__(self, state=None):
if state is None:
state = "DEFAULT_INIT_STATE"
self._state = state
def get_state(self):
# print self._surface
return self._state
def set_state(self, state):
self._state = state
_sm = StateMachine()
set_state = _sm.set_state
get_state = _sm.get_state
[/code]
Matt
On Dec 14, 7:35 pm, Matimus <mccre...@gmail.comwrote:On Dec 14, 8:52 am, tuom.lar...@gmail.com wrote:
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
but I hate to use global variable. 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()
Thanks, in advance!
Personally I _would_ do it the second way. That seems to be the most
appropriate way to do it. However, you can do it the second way and
still get the functionality you desire.
[code in state_machine.py]
class StateMachine(object):
def __init__(self, state=None):
if state is None:
state = "DEFAULT_INIT_STATE"
self._state = state
def get_state(self):
# print self._surface
return self._state
def set_state(self, state):
self._state = state
_sm = StateMachine()
set_state = _sm.set_state
get_state = _sm.get_state
[/code]
Matt
Thanks a lot! This is precisely what I had on my mind.
这篇关于状态机和全局变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!