Шаг 1 из 4+220 XP
Финал: мини-движок событий
on/emit — основа любого фреймворка.
Event bus
class Bus:
def __init__(self): self.subs = {}
def on(self, e, fn): self.subs.setdefault(e, []).append(fn)
def emit(self, e, *a):
for fn in self.subs.get(e, []): fn(*a)