Python pytransitions的内部转换是否正常工作

Python pytransitions的内部转换是否正常工作,python,pytransitions,Python,Pytransitions,我试图使用pytransitions版本0.6.4的内部转换功能,但它对我不起作用。我犯了一个错误 File "/python3.6/site-packages/transitions/core.py", line 720, in set_state mod.state = state.name AttributeError: 'NoneType' object has no attribute 'name' 我在这里修改了代码 mod.state = state.name if stat

我试图使用pytransitions版本0.6.4的内部转换功能,但它对我不起作用。我犯了一个错误

  File "/python3.6/site-packages/transitions/core.py", line 720, in set_state
mod.state = state.name
AttributeError: 'NoneType' object has no attribute 'name'
我在这里修改了代码

mod.state = state.name if state else mod.state
但后来它在别处出错了,所以我不确定这个功能是否存在问题

我正在初始化这台机器,用一系列的命令作为它的转换标记。一个dict的例子是,我相信这是正确的格式

{'trigger': 'cartridge_present_switch', 'source': 'post', 'dest': None, 'before': 'on_cartridge_present_switch'}
虽然文档仅显示使用add_transition方法添加的转换,如下所示

machine.add_transition('internal', ['liquid', 'gas'], None, after='change_shape')
有人能对内部转换功能发表评论吗


谢谢,John在
0.6.6
中引入了内部转换,如中所示。传递给构造函数的转换也将使用
add\u转换
进行处理。更准确地说,分配给构造函数的关键字
transitions
的值只是“按原样”传递给
add\u transitions
,其中参数被展开,每个transition分别调用
add\u transition
。当然,这个过程不是防弹的。然而,如果您面临的问题是,
add\u transition
起作用,但通过构造函数传递却不行,我建议再次检查参数列表

from transitions import Machine

class Model():

    def model_callback(self):
        print("callback called")
        pass


states = ['A', 'B']
transitions = [{'trigger': 'internal', 'source': 'A', 
                'dest': None, 'after': 'model_callback'}]

# variant 1, passing transitions via constructor
model = Model()
m = Machine(model, states=['A', 'B'], transitions=transitions, initial='A')
model.internal()  # >>> callback called

# variant 2, passing transitions to `add_transitions` for batch processing
model = Model()
m = Machine(model, states=['A', 'B'], initial='A')
m.add_transitions(transitions)
model.internal()  # >>> callback called

# variant 3, passing transitions individually to `add_transition`
model = Model()
m = Machine(model, states=['A', 'B'], initial='A')
# accessing an element of transition list and map the keywords
# to the method parameters; basically what `add_transitions` is doing
m.add_transition(**transitions[0])
model.internal()  # >>> callback called

请不要在问题中添加答案。只需对你自己的问题写一个(简短的)答案。