您的位置:首页 > 编程语言 > Python开发

使用python实现观察者思想

2014-02-28 10:28 288 查看
#coding=utf-8
class Observer(object):

def __init__(self):
self.handlersDic = {}

def fireEvent(self, eventKey, **kw):
"""
触发
"""
eList = self.handlersDic.get(eventKey,[])
for handler in eList: handler(**kw)

def un(self,eventKey, handler):
"""
在事件字典里删除相关方法
"""
eList = self.handlersDic.get(eventKey,[])
for i in range(len(eList)-1, -1, -1):
if eList[i] == handler: del eList[i]

def on(self,eventKey, handler):
"""
关联
"""
eList = self.handlersDic.get(eventKey,[])
if not eList: self.handlersDic[eventKey] = eList
eList.append(handler)

if __name__ == '__main__':
import time
def eatFood(t):
print "i am eat food at %s!" %t
o = Observer()
o.on("eatingFood", eatFood)
def singing():
print "i am singing!"
t = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
o.fireEvent("eatingFood", t=t)
singing()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: