给我写一个按需订阅的代码
时间: 2024-02-20 14:59:29 浏览: 40
HTML5邮箱订阅代码
好的,以下是一个简单的按需订阅的代码:
```
class SubscriptionManager:
def __init__(self):
self.subscriptions = {}
def add_subscription(self, key, callback):
if key not in self.subscriptions:
self.subscriptions[key] = []
self.subscriptions[key].append(callback)
def remove_subscription(self, key, callback):
if key in self.subscriptions:
self.subscriptions[key].remove(callback)
def notify_subscribers(self, key, data):
if key in self.subscriptions:
for callback in self.subscriptions[key]:
callback(data)
```
使用示例:
```
manager = SubscriptionManager()
def callback1(data):
print("Callback 1:", data)
def callback2(data):
print("Callback 2:", data)
manager.add_subscription("event1", callback1)
manager.add_subscription("event1", callback2)
manager.notify_subscribers("event1", "Hello, subscribers!")
# Output:
# Callback 1: Hello, subscribers!
# Callback 2: Hello, subscribers!
manager.remove_subscription("event1", callback1)
manager.notify_subscribers("event1", "Hello again, subscribers!")
# Output:
# Callback 2: Hello again, subscribers!
```
在这个例子中,我们创建了一个`SubscriptionManager`类,它允许我们添加、删除和通知事件的订阅者。每个事件都有一个唯一的键,我们可以使用这个键来添加、删除和通知订阅者。每个订阅者都有一个回调函数,当事件被触发时将被调用,并传递事件的数据。在上面的例子中,我们添加了两个回调函数作为事件“event1”的订阅者,并通知了这个事件的订阅者。在我们删除了第一个回调函数之后,只有第二个回调函数被调用。
阅读全文