所以我正在用 python 为基于网络的游戏创建后端。目前它的工作原理如下...
WebSocket Handler receives message...
WebSocket Handler calls message handler...
Message Handler calls Game class functions...
Game class calls other classes to update information.
这是高度耦合的,可能应该采用模型- View - Controller 格式。所以我最终要改变这一点。
基本上我希望它像这样工作。
Controller has open a WebSocket Handler.
WebSocket Handler returns to Controller a (1?).
Controller uses (1?) calls Message Handler.
Message Handler returns to Controller a (2?).
Contoller uses (2?) to call Model.
Model sends updates to appropriate places.
所以这里有两个问题。
首先,当我在 WebSocket Handler 中收到一条消息时,它是 Tornado 的 WebSocketHandler 的一个实例,并且我不确定如何将任何内容返回到 Controller。难道这根本不可能吗?我是否必须在 WebSocket 处理程序和消息处理程序之间保持少量耦合?我知道我总是可以在 Controller 中调用函数,但这似乎不是一个实际的修复,只是更多的函数调用。
有没有办法在 python 中传递函数调用,同时跟踪它的参数?这将是执行此操作的最佳方法,但我不认为它是用 python 语言实现的。否则,我觉得最好的方法是返回一个字典,其中包含要调用的函数名称的字段和参数的字段。这当然是更多的代码。如果可以避免,我愿意,但我不确定该采取什么方向。
感谢大家的提示,这是一次很大的重构,我真的很紧张从哪里开始。
最佳答案
对于问题的第二部分,我相信您想使用部分函数。
查看:http://docs.python.org/2/library/functools.html
基本上你会去:
from functools import partial
function_call(partial(future_function_call, future_argument))
关于python - 在 Python/Tornado 中返回(传递)函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19472563/