用python写一个程序(为python写了一个事件机制 小川 博客园)
本人新学PYTHON不久 ,问了很多人都说PYTHON没有事件机制 。 。 偶觉得很麻烦 ,就自己写了一个 。
要广播事件就必须继承 EventDispatcher类, 广播的事件必须是Aevent或者其子类 。
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
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!