23 lines
569 B
Python
23 lines
569 B
Python
from collections import defaultdict
|
|
|
|
class Event:
|
|
def __init__(self,name,**kwargs):
|
|
self.data=kwargs
|
|
self.name=name
|
|
def __getitem__(self,k):
|
|
return self.data[k]
|
|
def __getattr__(self,k):
|
|
if k in self.data: return self.data[k]
|
|
|
|
class EventManager:
|
|
def __init__(self):
|
|
self.handlers=defaultdict(list)
|
|
def clear(self):
|
|
self.__init__()
|
|
def on(self,event,func):
|
|
self.handlers[event].append(func)
|
|
def __call__(self,event_obj):
|
|
print(event_obj.name,event_obj.data)
|
|
handlers = self.handlers[event_obj.name]
|
|
for handler in handlers: handler(event_obj)
|