Обработка переходов в конечных автоматах в python, когда значения состояний пересекаются - PullRequest
1 голос
/ 20 мая 2019

У меня есть большое количество состояний, в которых состояния соответствуют числу в разных конечных автоматах

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

При попытке реализовать это я сталкиваюсь с проблемами с перекрывающимися значениями состояний, так как питон не может различать состояния, так как, например,

 A_STATE_STOPPED == B_STATE_SUCCESS
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...