在python中处理状态值交错时状态机中的转换

在python中处理状态值交错时状态机中的转换,python,state,state-machine,Python,State,State Machine,我有大量的状态,这些状态对应于不同状态机中的一个数字 A_STATE_IDLE = 0 A_STATE_ENGAGE = 1 A_STATE_STOP = 2 A_STATE_STOPPED = 3 B_STATE_IDLE = 0 B_STATE_START = 1 B_STATE_RUNNING = 2 B_STATE_SUCCESS = 3 B_STATE_FAIL = 4 B_STATE_STOP = 5 我还列出了状态机的不同转换 "trigger": press_start "fr

我有大量的状态,这些状态对应于不同状态机中的一个数字

A_STATE_IDLE = 0
A_STATE_ENGAGE = 1
A_STATE_STOP = 2
A_STATE_STOPPED = 3
B_STATE_IDLE = 0
B_STATE_START = 1
B_STATE_RUNNING = 2
B_STATE_SUCCESS = 3
B_STATE_FAIL = 4
B_STATE_STOP = 5
我还列出了状态机的不同转换

"trigger": press_start
"from": A_STATE_IDLE
"to": A_STATE_START

"trigger": press_start
"from": B_STATE_IDLE
"to": B_STATE_START
我应该如何处理状态的转换,是否可以在不将状态放入词典(如字典)的情况下进行转换

最好我能用这些方法中的一种来处理我的转换

press_start(A_STATE_IDLE) => A_STATE_START

A_STATE_IDLE.press_start() => A_STATE_START
在尝试实现这一点时,我遇到了状态值重叠的问题,因为python无法区分状态

 A_STATE_STOPPED == B_STATE_SUCCESS

为什么要避免使用字典?主要是因为有一个生成包含状态的文件的现有模板。更改现有模板将需要额外的工作,并可能导致许多意外问题。如果不使用字典(或其他解决方案)是不可能的,我仍然愿意接受这些想法。为什么要避免使用字典?主要是因为有一个生成包含状态的文件的现有模板。更改现有模板将需要额外的工作,并可能导致许多意外问题。如果不使用字典(或其他解决方案)是不可能的,我仍然愿意接受这些想法。