为python写了一个事件机制
本人新学PYTHON不久,问了很多人都说PYTHON没有事件机制。。 偶觉得很麻烦,就自己写了一个。
要广播事件就必须继承 EventDispatcher类, 广播的事件必须是Aevent或者其子类。
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.keysforkeyinkeys:
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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)