我正在尝试详细了解 Python 3 API 的设计方式,当使用提供 python 3.x 解释器的应用程序内部可用模块的 API 将元素添加到 UI 时,我被要求注册回调以便成为能够使用我的函数/脚本:从 Cpython 的角度来看,“注册回调”是什么意思?
问问题
5906 次
2 回答
7
通常,这意味着您创建了一个函数:
def foo(some,arguments):
pass #do something here
然后将该函数传递给提供的 API 中的某个类:
API_class_instance.register_callback(foo)
现在API_class_instance
将foo
在记录的情况下调用。
于 2013-04-10T18:10:02.443 回答
6
回调:
在计算机编程中,回调是一段可执行代码,它作为参数传递给其他代码,期望在某个方便的时间回调(执行)该参数。调用可能是即时的,如在同步回调中,也可能在稍后发生,如在异步回调中。
因此,如果您正在向 UI API 注册回调,那么您可能会将您创建的某个函数传递给另一个函数,该函数将负责在某些情况发生时调用您的函数。
例如,您可能在 UI 中有一个按钮,并且您希望在单击该按钮时执行一些代码。您可能会注册一个如下所示的回调:
def onclick():
print 'Button clicked!'
# call the onclick() method when the 'click' event happens on the button
some_api.register_callback(button, 'click', onclick)
API 代码可能如下所示:
# global variable containing callbacks
callbacks = {}
# API for registering callbacks
def register_callback(obj, event, callback):
if obj not in callbacks:
callbacks[obj] = {}
callbacks[obj][event] = callback
# a function that is called when some event is triggered on an object
def process_event(obj, event):
if obj in callbacks and event in callbacks[obj]:
# this object/event pair has a callback, call it
callback = callbacks[obj][event]
callback()
于 2013-04-10T18:15:20.383 回答