我有一個相對較大的枚舉,其中每個成員表示一個消息類型。客戶端將收到一條消息,其中包含與枚舉中msg類型關聯的整數值。對於每個msg類型,都會有一個單獨的函數回調來處理msg。使用Python將函數存儲在稀疏數組中
我想通過使用枚舉值映射到回調索引的稀疏數組(或矢量)儘可能快地查找和分派回調。如果數組不能包含函數類型,這在Python中是可行的嗎?
#pseudo code for 'enum'
class MsgType(object):
LOGIN, LOGOUT, HEARTBEAT, ... = range(n)
#handler class
class Handler(object):
def handleMsg(self, msg):
#dispatch msg to specific handler
def __onLogin(self, msg):
#handle login
def __onLogout(self, msg):
#handle logout
更新: 我是不是在我的術語清晰。我現在理解Python字典查找的複雜度爲O(1),這使得它們成爲完美的候選者。謝謝。
1.數組(我想你是指元組或列表)可以保存函數。 2.使用'dict'。 –
@DavidHeffernan在兩點上都完全正確。 Python數組可以保存函數引用,你應該使用'dict'來解決這個問題。 – steveha
@DavidHeffernan我認爲你應該給出這個答案。 –