【发布时间】:2021-07-26 09:20:45
【问题描述】:
例如,我将pytransitions 与状态机一起使用
from transitions import Machine
from transitions import EventData
class Matter(object):
def __init__(self):
transitions = [
{'trigger': 'heat', 'source': 'solid', 'dest': 'liquid'},
{'trigger': 'heat', 'source': 'liquid', 'dest': 'gas'},
{'trigger': 'cool', 'source': 'gas', 'dest': 'liquid'},
{'trigger': 'cool', 'source': 'liquid', 'dest': 'solid'}
]
self.machine = Machine(
model=self,
states=['solid', 'liquid', 'gas'],
transitions=transitions,
initial='solid',
send_event=True
)
def on_enter_gas(self, event: EventData):
print(f"entering gas from {event.transition.source}")
def on_enter_liquid(self, event: EventData):
print(f"entering liquid from {event.transition.source}")
def on_enter_solid(self, event: EventData):
print(f"entering solid from {event.transition.source}")
我想添加一个状态,任何触发器都保持相同的状态,不调用转换,不明确指定每个可能的触发器,也不忽略所有无效触发器(因为这非常适合调试) .
例如,我想要一个状态crystal,可以通过从liquid 触发crystalize 来达到此状态,对此任何事件都不会执行任何操作。
这可以通过库实现吗?
表达这个问题的另一种方式是ignore_invalid_triggers=True 仅针对特定州,而不是所有州。
【问题讨论】:
标签: python transition state-machine pytransitions