按照小明明的设计模式抄抄看看。。

http://dongweiming.github.io/python-observer.html

# 这个是观察者基类
class Subject(object):def __init__(self):self._observers = []# 添加依赖的对象def attach(self, observer):if not observer in self._observers:self._observers.append(observer)# 取消添加def detach(self, observer):try:self._observers.remove(observer)except ValueError:pass# 这里只是通知上面注册的依赖对象新的变化def notify(self, modifier=None):for observer in self._observers:# 可以设置过滤条件,对不符合过滤条件的更新if modifier != observer:observer.update(self)# 观察者类
class Data(Subject):def __init__(self, name=''):super(Data, self).__init__()self.name = nameself._data = 0# python2.6新增的写法,获取属性为property,设置属性为(假设属性名字为x)@x.setter,删除为@x.deleter
    @propertydef data(self):return self._data@data.setterdef data(self, value):self._data = valueself.notify()# 这里有2个被观察者,也就是依赖的对象,每次Data有改变,这2个view都会变动
class HexViewer(object):def update(self, subject):print 'HexViewer: Subject %s has data 0x%x' % (subject.name, subject.data)class DecimalViewer(object):def update(self, subject):print 'DecimalViewer: Subject %s has data %d' % (subject.name, subject.data)if __name__ == '__main__':data1 = Data('Data 1')data2 = Data('Data 2')view1 = DecimalViewer()view2 = HexViewer()data1.attach(view1)data1.attach(view2)data2.attach(view2)data2.attach(view1)print "Setting Data 1 = 10"data1.data = 10print "Setting Data 2 = 15"data2.data = 15print "Setting Data 1 = 3"data1.data = 3print "Setting Data 2 = 5"data2.data = 5print "Update data1's view2 Because view1 is be filtered"data1.notify(modifier=view1)  print "Detach HexViewer from data1 and data2."data1.detach(view2)data2.detach(view2)print "Setting Data 1 = 10"data1.data = 10print "Setting Data 2 = 15"data2.data = 15

学点PYTHON基础的东东--数据结构,算法,设计模式---观察者模式相关推荐

  1. 一木.溪桥学Python-04: Python基础数据类型int ,float ,bool ,complex,None,str, 转义字符

    一木.溪桥 在Logic Education跟Amy学Python 12期:Python基础课 一木.溪桥学Python-04: Python基础数据类型int ,float ,bool ,compl ...

  2. python基础知识整理-整理了27个新手必学的Python基础知识点

    原标题:整理了27个新手必学的Python基础知识点 1.执行脚本的两种方式 Python a.py 直接调用Python解释器执行文件 chomd +x a.py ./a.py #修改a.py文件的 ...

  3. 【Python基础学习】基本数据结构:列表、元组、栈、字典、集合与队列

    [Python基础学习]基本数据结构:列表.元组.栈.字典.集合与队列 Python的基本数据结构中,包含了列表.元组等一系列数组式数据结构,但各个结构各有不同.因此单独列出来,分析相同与不同 列表( ...

  4. 学了Python基础,苦于无法上手实战,看这本

    Python语言能让编程变得更加简单易学.但是,在掌握Python基础知识后,你是否面临编程技能无法提升,不知后续学习该如何开展的问题?<Python编程实战 妙趣横生的项目之旅>包含许多 ...

  5. 享学课堂python基础学习day15之文件操作

    我是一个22年8月加入享学课堂的学生,主要学习python基础和爬虫课程,学到现在,发现以前的学习知识容易忘记,听了老师的建议之后,决定在CSDN写博客,可以复习自己学过的知识,废话不多说,文件操作里 ...

  6. python基础语法和基本数据结构

    Python基础语法 一.运算符 a.比较运算符 运算符 意义 x<y 当x真的小于y时,返回真,否则返回假 b.数值运算符 运算符 意义 x/y 返回x/y的结果 x//y 返回x除于y的整数 ...

  7. 享学课堂python基础学习day16之类和对象

    我是一个22年8月加入享学课堂的学生,主要学习python基础和爬虫课程,学到现在,发现以前的学习知识容易忘记,听了老师的建议之后,决定在CSDN写博客,可以复习自己学过的知识,今天分享类和对象学习了 ...

  8. python爬虫在哪里学_学完了python基础想学习python爬虫从哪里学起呢?

    针对Python爬虫,我还是有一定的话语权的 我之前就是先学习Python基础,然后用Python做了几个网站,后面需要数据,所以开始学习Python的爬虫技术. 关于Python方面的爬虫, 最基础 ...

  9. 学完python基础开始学爬虫_零基础入门Python爬虫不知道怎么学?这是入门的完整教程...

    这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...

最新文章

  1. [sinatra] Just Do It: Learn Sinatra, Part One Darren Jones
  2. BIOS, UEFI, MBR, GPT, GRUB介绍
  3. 你不知道的18个Python高效编程技巧
  4. 基于订阅的服务通讯架构体系
  5. SFTP例子2----使用JSch实现SFTP文件传输
  6. 字符串处理分割字符串
  7. 用diff命令制作补丁
  8. JQuery实现广告效果(滚动切换)
  9. JAVA中为什么要用接口定义编程_【Java公开课|为什么要用Java接口,这些内容你一定要搞清楚】- 环球网校...
  10. Markdow简单介绍
  11. HTML+JavaScript实现黑客帝国代码雨
  12. 完美解决C#中拖动splitContainer分割线时显示虚线问题
  13. 《数据库应用》课程设计人事管理系统(java源代码)
  14. Java实现:四六级真题批量PDF文件英文单词词频分析、排序
  15. 批量抓取羊毛网站信息,定时自动发送到邮箱进行阅览
  16. 无线wifi-PJ-之在开启WPS下使用reaver
  17. 淄博烧烤火了,其他的烧烤靠什么火呢
  18. 2021-04-19-记录学习linux
  19. 【操作系统-哈工大李治军】---学习笔记(下)---操作系统管理内存
  20. tif文件转为shp文件_在arcgis中怎么把tif格式的遥感图像转换为矢量图

热门文章

  1. Sql Server 指定列的乘积
  2. BZOJ 2555: SubString [后缀自动机 LCT]
  3. jeecg3.5的一个bug
  4. 基于柯西矩阵的Erasure Code技术详解
  5. 【javascript激增的思考03】MVVM与Knockout
  6. 1. MySQL基础概念及mysql安装,从MySQL获得帮助 及视频下载地址
  7. 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统
  8. [导入]C#中的“装箱”与“拆箱”
  9. 问题六十二:怎么求一元十次方程在区间内的所有不相等的实根(2)——修正“区间端点零值”问题
  10. 大数据技术对企业发展的作用