gpt4 book ai didi

python - 模式 - 没有 else if 的事件调度程序?

转载 作者:太空宇宙 更新时间:2023-11-04 07:12:10 25 4
gpt4 key购买 nike

我正在为 Detours 库创建一个 Python 包装器。该工具的一部分是一个调度程序,用于将所有 Hook 的 API 调用发送到各种处理程序。

现在我的代码是这样的:

if event == 'CreateWindowExW':
# do something
elif event == 'CreateProcessW':
# do something
elif ...

这感觉很糟糕。是否有一种模式可以创建事件调度程序而不必为每个 Windows API 函数创建 elif 分支?

最佳答案

一个很好的方法是定义一个类,该类具有等同于相关 API 函数名称的方法,以及一个分派(dispatch)到正确方法的分派(dispatch)方法。例如:

class ApiDispatcher(object):

def handle_CreateWindowExW(self):
# do whatever

def handle_CreateProcessW(self):
# do this one

def dispatch(self, event):
method = getattr(self, 'handle_%s' % event)
method()

关于python - 模式 - 没有 else if 的事件调度程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5431732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com