为python写了一个事件机制

本人新学PYTHON不久,问了很多人都说PYTHON没有事件机制。。 偶觉得很麻烦,就自己写了一个。

要广播事件就必须继承 EventDispatcher类, 广播的事件必须是Aevent或者其子类。

为python写了一个事件机制  小川  博客园为python写了一个事件机制  小川  博客园Code

classEventDispatcher(object):

def__init__(self):

self.events={}

defaddEventListener(self,eventType,listenFunction):

ifnotself.events.has_key(eventType):

self.events[eventType]=[]

eventList=self.events[eventType]

eventList.append(listenFunction)

defremoveEventListener(self,eventType,ListenFunction):

ifnotself.events.has_key(eventType):

return

eventList=self.events[eventType]

eventList.remove(ListenFunction)

defdispatchEvent(self,event):

ifnotself.events.has_key(event.type):

return

eventList=self.events[event.type]

forfunineventList:

fun()

def__del__(self):

keys=self.events.keys

forkeyinkeys:

eventList=self.events[key]

forfunineventList:

delfun

classAevent(object):

def__init__(self,Type):

self.type= Type

使用示例代码

复制代码

classObj(EventDispatcher):

def__init__(self):

self.i=1

EventDispatcher.__init__(self)

defaddI(self):

self.i=1+self.i

EventDispatcher.dispatchEvent(self,Aevent('iadd'))

defonIadd():

printo.i

o=Obj()

o.addEventListener('iadd',onIadd)

o.addI()#output2

o.addI()#output3

o.removeEventListener('iadd',onIadd)

o.addI()#nooutput