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

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

为python写了一个事件机制

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

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

Code

class EventDispatcher(object):

def __init__(self):

self.events = {}

def addEventListener(self,eventType,listenFunction):

if not self.events.has_key(eventType):

self.events[eventType] = []

eventList = self.events[eventType]

eventList.append(listenFunction)

def removeEventListener(self,eventType,ListenFunction):

if not self.events.has_key(eventType):

return

eventList = self.events[eventType]

eventList.remove(ListenFunction)

def dispatchEvent(self,event):

if not self.events.has_key(event.type):

return

eventList = self.events[event.type]

for fun in eventList:

fun()

def __del__(self):

keys = self.events.keys

for key in keys:

eventList = self.events[key]

for fun in eventList:

del fun

class Aevent(object):

def __init__(self,Type):

self.type = Type

使用示例代码

class Obj(EventDispatcher):

def __init__(self):

self.i = 1

EventDispatcher.__init__(self)

def addI(self):

self.i = 1 + self.i

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

def onIadd():

print o.i

o = Obj()

o.addEventListener('iadd',onIadd)

o.addI()    #output 2

o.addI()    #output 3

o.removeEventListener('iadd',onIadd)

o.addI()    #no output

posted on 2012-05-11 19:53 lexus 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/05/11/2496591.html

为python写了一个事件机制 - 小川 - 博客园相关推荐

  1. 一个简单的小项目博客园(2)登录、注册页面

    目录: 注册功能(使用forms组件) 登录功能(使用验证码) 注册功能(使用forms组件) 解耦合在app01中创建myforms.py from django import forms from ...

  2. python卖水果_小姨开水果店的,所以今天用Python写了一个水果店小系统!

    原标题:小姨开水果店的,所以今天用Python写了一个水果店小系统! 前言 今天晚上才刚下班,小姨就提了我最爱吃的榴莲过来,说不吃就坏了. 我一眼就看破了她的用意,哈哈哈 我这个小姨也是一起长大的,她 ...

  3. 一个可编辑与新增博客园文章的 Python 脚本

    我的个人独立博客是基于 Hexo 搭建的,因为小站,Google 搜索引擎收录文章比较慢,还搜不到 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻 ...

  4. 接口应用小玩具-博客园积分排名变动监控工具

    小玩具-博客园积分排名变动监控工具 一个简单的在线服务监控和提醒工具 1   概述 前段时间自己准备重新开启自己的博客园,然后还和一些圈子里面的朋友夸下海口,自己要开始像打游戏那样,进行博客园的 天梯 ...

  5. python爬虫入门教程-Python爬虫入门教程——爬取自己的博客园博客

    互联网时代里,网络爬虫是一种高效地信息采集利器,可以快速准确地获取网上的各种数据资源.本文使用Python库requests.Beautiful Soup爬取博客园博客的相关信息,利用txt文件转存. ...

  6. python爬虫教程-Python爬虫入门教程——爬取自己的博客园博客

    互联网时代里,网络爬虫是一种高效地信息采集利器,可以快速准确地获取网上的各种数据资源.本文使用Python库requests.Beautiful Soup爬取博客园博客的相关信息,利用txt文件转存. ...

  7. 开发记录_自学Python写爬虫程序爬取csdn个人博客信息

    每天刷开csdn的博客,看到一整个页面,其实对我而言,我只想看看访问量有没有上涨而已... 于是萌生了一个想法: 想写一个爬虫程序把csdn博客上边的访问量和评论数都爬下来. 打算通过网络各种搜集资料 ...

  8. python爬虫:两种方法模拟登录博客园

    第一方法用第三方库(requests):参考http://www.mamicode.com/info-detail-1839685.html 源代码分析 博客园的登录页面非常简单,查看网页源代码,可以 ...

  9. python基础论文_Python基础 - 文章分类 - rwwh - 博客园

    文章分类 - Python基础 摘要:参考 https://www.cnblogs.com/yuanchenqi/articles/5722574.html https://www.cnblogs.c ...

  10. ASP.NET Core中实现单体程序的事件发布/订阅 - LamondLu - 博客园

    标题:ASP.NET Core中实现单体程序的事件发布/订阅作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/10468058.html 项目源代码:h ...

最新文章

  1. 一个思维习惯,让你成为架构师
  2. angular2.0学习日记1
  3. 【深度学习】人群距离监测 DeepSOCIAL 最全汉化论文+源码导读
  4. 管理用户和PROFILE——管理用户——修改用户
  5. Express 项目结构最佳实践(上)
  6. Python 安装MySQL数据库工具包
  7. CentOS7通过定时脚本阻断异常IP连接SSH(实测)
  8. 模式匹配算法逐步精简
  9. excel处理html文件,html网页显示excel表格数据-html读取本地excel文件并展示
  10. (计算机考研复试)计算机网络重点知识
  11. 以太网帧分析与IP报文结构分析(二)
  12. CSS超详细知识点总结2
  13. iOS Extension调试 无法在Xcode上进行调试
  14. configure: error: Package requirements (sqlite3 」 3.7.4) were not met:
  15. 操作系统进程调度算法——吸烟者问题
  16. 同步、异步 阻塞、非阻塞
  17. .git文件夹过大,给它瘦身
  18. 计算机看服务代码,帮我查 下戴尔笔记本服务代码 25822644085 服务编号 BV24VP1 (电脑出厂日期,配置)...
  19. 【C++】野指针及其危害
  20. python自动识别简单图片中的文字

热门文章

  1. 通信技术专业技术人员考试 动力与环境_建筑信息模型专业技术人员等级认定培训考试项目介绍...
  2. 复制EXCEL单元格的值到SpreadJs单元格中,会多加一个可见的空格和一个不可见的0宽度空格的解决方法(ie11)
  3. Horspool算法
  4. uri和url的区别与联系(一看就理解)
  5. 【AI撬动地球】超级大国政治将让位于跨国AI巨头
  6. 半导体芯片产业链公司大全
  7. html留言页面设计,html的留言板制作(js)
  8. 视频转rtmp流及搭建视频流服务器
  9. 计算机无法删除ie,ie删不掉的原因及解决方法【图解】
  10. 雨林木风GhostXPSP3装机版YN9.9_09.11更新