繁体   English   中英

返回(传递)Python / Tornado中的函数调用?

[英]Returning (Passing Around) A Function Call in Python/Tornado?

因此,我正在使用python创建基于Web的游戏的后端。 目前,它的工作方式如下:

WebSocket处理程序收到消息...

WebSocket处理程序调用消息处理程序...

消息处理程序调用游戏类函数...

游戏类会调用其他类来更新信息。

这是高度耦合的,可能应该采用模型-视图-控制器格式。 所以我终于要改变这一点。

基本上,我希望它像这样工作。

控制器已打开一个WebSocket处理程序。

WebSocket处理程序返回到控制器a(1?)。

控制器使用(1?)调用消息处理程序。

消息处理程序返回控制器a(2?)。

Contoller使用(2?)调用Model。

模型将更新发送到适当的位置。

因此,这里有两个问题。

  1. 首先,当我在WebSocket处理程序中收到一条消息时,它是Tornado WebSocketHandler的一个实例,并且我不确定如何将任何内容返回给Controller。 是否仅因为这不可能? 我必须在WebSocket处理程序和消息处理程序之间保持少量耦合吗? 我知道我总是可以在Controller中调用一个函数,但这似乎不是一个实际的解决方法,只是更多的函数调用。

  2. 有没有办法在python中传递函数调用,同时跟踪其参数? 那将是执行此操作的最佳方法,但我认为它不是以python语言实现的。 否则,我觉得最好的方法是返回一个字典,其中包含用于调用函数名称的字段以及用于参数的字段。 这当然是很多代码。 如果可以避免,我希望这样做,但是我不确定该采取的方向。

感谢您提供的提示,这是一个很大的重构,我对于从哪里开始感到非常紧张。

对于您问题的第二部分,我相信您想使用部分函数。

检出: http : //docs.python.org/2/library/functools.html

基本上你会去:

from functools import partial

function_call(partial(future_function_call, future_argument))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM