当状态值重叠时在python中处理状态机中的转换

时间:2019-05-20 08:51:14

标签: 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
"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

0 个答案:

没有答案