You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PyTransitions有限状态机(FSM)的YAML配置中定义状态输出动作

PyTransitions原生支持状态绑定回调动作,你只需要将YAML中原本字符串格式的状态项,调整为包含回调配置的字典结构即可,修改后的配置示例如下:

initial: A
states:
  - name: A
    on_enter: led1_on
  - name: B
    on_enter: led2_on
  - name: C
    on_enter: [led1_on, led2_on]
transitions:
  - {trigger: "AtoC", source: "A", dest: "C"}
  - {trigger: "CtoB", source: "C", dest: "B"}

配置说明:

  • 每个状态项改为字典结构,name字段填写原状态名称,on_enter字段填写进入该状态时需要触发的回调函数名,需要同时触发多个动作时,用列表格式填写多个函数名即可。
  • 除了进入状态的回调,你也可以用on_exit字段配置离开当前状态时需要执行的动作,用法和on_enter完全一致。
  • 你需要在状态机绑定的Python类中,提前实现对应名称的回调方法,执行点亮LED的实际逻辑。

配套的Python加载参考代码:

from transitions import Machine
import yaml

class LEDStateMachine:
    def led1_on(self):
        # 此处替换为实际点亮LED1的硬件操作逻辑
        print("LED1 已点亮")
    
    def led2_on(self):
        # 此处替换为实际点亮LED2的硬件操作逻辑
        print("LED2 已点亮")

# 加载YAML配置
with open("fsm_config.yaml", encoding="utf-8") as f:
    fsm_config = yaml.safe_load(f)

# 初始化状态机
led_machine = LEDStateMachine()
machine = Machine(model=led_machine, **fsm_config)

# 功能测试
print(f"初始状态:{led_machine.state}")
led_machine.AtoC()
print(f"切换后状态:{led_machine.state}")
led_machine.CtoB()
print(f"切换后状态:{led_machine.state}")

内容的提问来源于stack exchange,提问作者Mtk59

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:54:03