python - 接受 1 个位置参数,但给出了 2 个(对于 python 包:transitions)
问题描述
我正在使用 python 库“转换”来构建状态机。以下代码片段是问题陈述。
from transitions import *
class Matter(object):
def __init__(self):
self.temp = 0
self.pressure = 101.325
def set_environment(self, event):
self.temp = event.kwargs.get('temp', 0)
self.pressure = event.kwargs.get('pressure', 101.325)
def print_pressure(self): print("Current pressure is %.2f kPa." % self.pressure)
def dummy(self): print('I am liquid')
lump = Matter()
states = [State(name='solid'),
State(name='liquid', on_enter=['dummy'])]
transitions = [ {'trigger': 'melt', 'source': 'solid', 'dest': 'liquid', 'before':'set_environment'}]
machine = Machine(lump, states=states, transitions=transitions, send_event=True, initial='solid')
lump.melt(temp=45, pressure=1853.68) # keyword args
lump.print_pressure()
如果不使用 dummy() 函数,代码运行没有任何问题。但是,使用 dummy() 函数会出现以下错误。
/home/developer/anaconda3/envs/SM_MC/bin/python /home/developer/PycharmProjects/SM_MC/error.py
Traceback (most recent call last):
File "/home/developer/PycharmProjects/SM_MC/error.py", line 24, in <module>
lump.melt(temp=45, pressure=1853.68) # keyword args
File "/home/developer/anaconda3/envs/SM_MC/lib/python3.7/site-packages/transitions/core.py", line 383, in trigger
return self.machine._process(func)
File "/home/developer/anaconda3/envs/SM_MC/lib/python3.7/site-packages/transitions/core.py", line 1047, in _process
return trigger()
File "/home/developer/anaconda3/envs/SM_MC/lib/python3.7/site-packages/transitions/core.py", line 399, in _trigger
return self._process(event_data)
File "/home/developer/anaconda3/envs/SM_MC/lib/python3.7/site-packages/transitions/core.py", line 409, in _process
if trans.execute(event_data):
File "/home/developer/anaconda3/envs/SM_MC/lib/python3.7/site-packages/transitions/core.py", line 263, in execute
self._change_state(event_data)
File "/home/developer/anaconda3/envs/SM_MC/lib/python3.7/site-packages/transitions/core.py", line 274, in _change_state
event_data.machine.get_state(self.dest).enter(event_data)
File "/home/developer/anaconda3/envs/SM_MC/lib/python3.7/site-packages/transitions/core.py", line 120, in enter
event_data.machine.callback(handle, event_data)
File "/home/developer/anaconda3/envs/SM_MC/lib/python3.7/site-packages/transitions/core.py", line 1003, in callback
func(event_data)
TypeError: dummy() 接受 1 个位置参数,但给出了 2 个
链接中有关转换包的更多信息:https ://github.com/pytransitions/transitions#passing-data
可能是什么问题呢?提前致谢。
解决方案
推荐阅读
- python - 所以我在 python 上做一个虚拟助手
- html - 需要在星云菜单中添加徽章
- flutter - Dart 断言如果在构造函数中不为空
- r - 我可以在 2 列之间的范围内识别相同的值吗?
- c# - .NET Core Google OAuth(和其他提供者) - 我需要存储访问令牌吗?
- javascript - 骨架加载器组件
- go - Golearn 模型对自变量(预测变量)和目标(预测)是隐含的
- c++ - 代码给出了“类型的引用......不能用值初始化......”但这个简单的修复解决了它。为什么?
- python - sqlalchemy.exc.IntegrityError
- android - 在 Kotlin Android 中延迟加载页面的功能有错误