用python表示状态机的一种更方便简洁的方法
pytomaton的Python项目详细描述
pytomaton:python中的状态机
=
brief
----
通常,状态机是实现有状态协议的一种方便方法,但是
它们通常包含许多混乱的样板文件,用于管理如何从一个状态转换到下一个状态,或者当您进入一个状态时究竟发生了什么。
“pytomaton”是创建的以减少这个样板代码。
正如在理论自动机中一样,“pytomaton.statemachine”有一个
状态列表,即开始状态。在任何给定时间,状态机都处于一个
状态。程序员可以调用“state machine.transition(new_state_name)”来
转换到一个新状态;当发生这种情况时,状态机将检查是否有任何由该转换触发的操作。当前,可以通过输入特定状态(`on_enter`)或将
从一个特定状态转换到另一个特定状态(`on_transition`)来触发操作
。方法被修饰为由转换触发的
,如下例所示。
example
----
='等待连接'
def on_connect(self):
self.transition('waiting_for_ready')
@on_transition('waiting_for_connection','waiting_for_ready')
def send_ready_prompt(self):
self.broadcast('Are you ready?')
def receive_ready_confirm(self):
如果是self.all_ready():
self.transition('all_ready')
@on_enter('all_ready')
def send_all_ready(self):
self.broadcast('everyone is ready!')
在本例中,我们定义了一个具有三种状态的“connectionmachine”。它以“等待连接”状态启动。当用户连接时,in
将转换到“waiting_for_ready”状态,这将触发对
“send_ready_prompt”的调用。当用户确认准备就绪时,我们将转换到
“on_ready”状态,这将触发调用“send_all_ready”。
=
brief
----
通常,状态机是实现有状态协议的一种方便方法,但是
它们通常包含许多混乱的样板文件,用于管理如何从一个状态转换到下一个状态,或者当您进入一个状态时究竟发生了什么。
“pytomaton”是创建的以减少这个样板代码。
正如在理论自动机中一样,“pytomaton.statemachine”有一个
状态列表,即开始状态。在任何给定时间,状态机都处于一个
状态。程序员可以调用“state machine.transition(new_state_name)”来
转换到一个新状态;当发生这种情况时,状态机将检查是否有任何由该转换触发的操作。当前,可以通过输入特定状态(`on_enter`)或将
从一个特定状态转换到另一个特定状态(`on_transition`)来触发操作
。方法被修饰为由转换触发的
,如下例所示。
example
----
='等待连接'
def on_connect(self):
self.transition('waiting_for_ready')
@on_transition('waiting_for_connection','waiting_for_ready')
def send_ready_prompt(self):
self.broadcast('Are you ready?')
def receive_ready_confirm(self):
如果是self.all_ready():
self.transition('all_ready')
@on_enter('all_ready')
def send_all_ready(self):
self.broadcast('everyone is ready!')
在本例中,我们定义了一个具有三种状态的“connectionmachine”。它以“等待连接”状态启动。当用户连接时,in
将转换到“waiting_for_ready”状态,这将触发对
“send_ready_prompt”的调用。当用户确认准备就绪时,我们将转换到
“on_ready”状态,这将触发调用“send_all_ready”。