[英]Returning (Passing Around) A Function Call in Python/Tornado?
因此,我正在使用python創建基於Web的游戲的后端。 目前,它的工作方式如下:
WebSocket處理程序收到消息...
WebSocket處理程序調用消息處理程序...
消息處理程序調用游戲類函數...
游戲類會調用其他類來更新信息。
這是高度耦合的,可能應該采用模型-視圖-控制器格式。 所以我終於要改變這一點。
基本上,我希望它像這樣工作。
控制器已打開一個WebSocket處理程序。
WebSocket處理程序返回到控制器a(1?)。
控制器使用(1?)調用消息處理程序。
消息處理程序返回控制器a(2?)。
Contoller使用(2?)調用Model。
模型將更新發送到適當的位置。
因此,這里有兩個問題。
首先,當我在WebSocket處理程序中收到一條消息時,它是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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.