首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在状态机初始化过程中使用PyTransitions状态机强制回调

在状态机初始化过程中使用PyTransitions状态机强制回调
EN

Stack Overflow用户
提问于 2020-05-29 02:31:18
回答 1查看 254关注 0票数 1

我已经为池控制器编写了一台状态机,但是在文档中提到的关于在初始化模型时强迫on_enter方法启动的东西让我感到很困难。文件上说:

“请注意,当机器首次初始化时,on_enter_«state name»回调不会触发。例如,如果定义了on_enter_A()回调,并使用initial='A'初始化机器,则在下次进入状态A之前不会触发on_enter_A() (如果需要确保on_enter_A()在初始化时触发,则只需创建一个虚拟初始状态,然后在__init__方法中显式调用to_A() )。”

但是我不知道我需要在哪里调用它.我创建了一个名为Pool_Controller的类,然后像这样创建了一个Pool_Controller实例

代码语言:javascript
复制
MyController=Pool_Controller

然后我创建这样的状态机

代码语言:javascript
复制
machine = Machine(MyController, states=states, transitions, initial='dummy_state')

我需要将to_initial_state()放在哪里才能使dummy_state立即跳转到我的initial_state,以便当模型不合理时on_enter_initial_state会执行?

EN

回答 1

Stack Overflow用户

发布于 2021-04-06 11:10:02

在对控制器(模型)进行修饰(添加到机器上)之后,您需要显式调用to_initial_state。我建议一种方法,首先实例化机器并传递给模型的构造函数:

代码语言:javascript
复制
from transitions import Machine

class PoolController:

    def __init__(self, machine):
        machine.add_model(self)
        self.to_initial_state()

# we will add the model later (in the model constructor)
machine = Machine(model=None, states=['dummy_state', 'initial_state'], initial='dummy_state')
controller = PoolController(machine)
assert controller.is_initial_state()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62077740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档