首页IT科技用python写一个程序(为python写了一个事件机制 小川 博客园)

用python写一个程序(为python写了一个事件机制 小川 博客园)

时间2025-07-31 10:31:27分类IT科技浏览4793
导读:本人新学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.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版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
显卡硬件加速如何才能开启呢苹果(显卡硬件加速如何才能开启呢?) 如何快速整理桌面(如何操作才能快速整理电脑桌面呢?)