簡體   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