Types in add_handler
unknown
python
3 years ago
919 B
7
Indexable
@dataclass(frozen=True)
class BundlePurchased(Event):
user_id: UserID
code: str
@dataclass(frozen=True)
class BundleRegistred(Event):
bundle_id: BundleID
user_id: UserID
class EventBus:
def __init__(self):
self.handlers: DefaultDict[Type[Event], List[EventHandler]] = defaultdict(list)
def add_handler(self, event: Type[Event], handler: EventHandler):
self.handlers[event].append(handler)
def publish(self, event: Event):
handlers = self.handlers[event.__class__]
for handler in handlers:
handler(event)
event_bus = EventBus()
def bundle_purchased_handler(event: BundlePurchased) -> None:
...
def bundle_registred_handler(event: BundleRegistred) -> None:
...
event_bus.add_handler(BundlePurchased, bundle_purchased_handler)
event_bus.add_handler(BundleRegistred, bundle_registred_handler)Editor is loading...