Python pytransitions的内部转换是否正常工作
我试图使用pytransitions版本0.6.4的内部转换功能,但它对我不起作用。我犯了一个错误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
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
请不要在问题中添加答案。只需对你自己的问题写一个(简短的)答案。