构建一个支持回调函数的CallbackList()类
发布时间:2023-12-31 17:57:54
CallbackList类是一个用于管理回调函数的类,它允许用户向列表中添加回调函数,并在需要的时候调用这些回调函数。
下面是一个实现CallbackList类的代码:
class CallbackList:
def __init__(self):
self.callbacks = []
def add_callback(self, callback):
self.callbacks.append(callback)
def remove_callback(self, callback):
self.callbacks.remove(callback)
def invoke(self, *args, **kwargs):
for callback in self.callbacks:
callback(*args, **kwargs)
在这个类中,我们使用一个列表来存储添加的回调函数。add_callback方法用于向列表中添加回调函数,remove_callback方法用于从列表中删除回调函数。invoke方法用于调用所有的回调函数,并将传入的参数传递给它们。
下面是一个使用CallbackList类的例子:
def callback1():
print("Callback 1 is called")
def callback2(name, age):
print(f"Callback 2 is called with name={name} and age={age}")
# 创建一个CallbackList实例
callback_list = CallbackList()
# 向CallbackList中添加回调函数
callback_list.add_callback(callback1)
callback_list.add_callback(callback2)
# 调用所有的回调函数
callback_list.invoke()
# 从CallbackList中删除回调函数
callback_list.remove_callback(callback1)
# 再次调用所有的回调函数,此时callback1不会被调用
callback_list.invoke("John", 25)
上面的例子中,我们首先创建了一个CallbackList实例callback_list。然后,我们定义了两个回调函数callback1和callback2,并使用add_callback方法将它们添加到callback_list中。接下来,我们调用callback_list的invoke方法,这将调用所有的回调函数。在最后,我们使用remove_callback方法将callback1从callback_list中删除,并再次调用invoke方法,此时callback1不会被调用。
使用CallbackList类,我们可以方便地管理回调函数,并在需要的时候调用它们。这在许多应用场景中都非常有用,例如事件处理、观察者模式等。
