PythonFSM
simple-fsm的Python项目详细描述
有限状态机
一个简单的“pythonic”FSM实现。用状态转换来装饰你的行为。
使用状态转换表创建一个FSM实例。将事件推送到事件队列中。
使用next
生成器处理状态机。在
状态转换表
用状态转换来装饰你的行为。假设你有一个简单的两态 计算机和一个可以在两个状态之间切换的事件。在
import fsm
table = fsm.Table()
@table('STATE1', 'doit', 'STATE2')
def action1(*args, **kwargs):
pass
@table('STATE2', 'doit', 'STATE1')
def action2(*args, **kwargs):
pass
print(table.dump())
输出
^{pr2}$FSM实例
使用状态转换表和初始状态定义一个FSM实例。
要执行状态机,您可以push
事件到事件队列并通过
next
方法。在
myfsm = fsm.FSM(table, 'STATE1')
myfsm.push('doit')
myfsm.push('doit')
for _ in myfsm.next():
print(myfsm.state)
输出
STATE2
STATE1
由于next
是一个生成器,因此需要通过生成器语法进行处理。做它
这种方式允许事件在任何时候被推送到FSM中。在
行动
为每个状态转换调用操作fn
。有时你会想传递注释
通过FSM的数据。next
方法使用*args, **kwargs
提供该方法。你可以
推送包含自定义**kwargs
数据的事件,该数据将合并到操作调用中
**kwargs
。最后,调用的每个操作都将有一个transition_FSM
作为kwargs传入
也。在
- 项目
标签: