一个对象可以将自己作为参数传递给Python中的函数吗?

时间:2013-09-28 22:06:26

标签: python

所以我正在构建一个游戏,并且我有一个消息处理程序(目前为止)处理游戏本身,现在是大厅。每次发送消息时,都会创建该消息处理程序的新实例。例如......

来自wshandler.py的

def on_message(self, message):
    MH = protocol.msghandler.HandlerImplementation(self)
    message = tornado.escape.json_decode(message)
    MH.handle_message(message)

现在MH对象......它调用了大厅类中的一个函数,它将它们放入队列中。队列将在一个线程上实现,该线程在程序启动时启动...

来自main.py的

lobby = model.lobby.Lobby()
threading.Thread(target = lobby.match_players).start()

我基本上要问的是,我可以在HandlerImplementation中执行此操作......

def join_queue(self, username):
    main.lobby.join_queue(username, self)

这是在lobby.py:

def join_queue(self, username, messager):
    self.lock.acquire()
    self.queue.append((username, messager))
    self.lock.release()

因此,当我在lobby.match_players中匹配玩家时,我基本上可以这样做......

def match_players(self):
    while(True):
        while len(self.queue) < 2: pass
        self.lock.acquire()
        if len(self.queue) >= 2:
            player1 = self.queue.pop(0)
            player2 = self.queue.pop(0)
            player1[1].player_connect(player1[0], player2[0])
            player2[1].player_connect(player2[0], player1[0])
        self.lock.release()

假设player_connect是HandlerImplementation中定义的函数?

0 个答案:

没有答案