`
aaron_ch
  • 浏览: 178985 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Python

 
阅读更多
## {{{ http://code.activestate.com/recipes/131499/ (r2)
class Subject:
    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)


# Example usage
class Data(Subject):
    def __init__(self, name=''):
        Subject.__init__(self)
        self.name = name
        self.data = 0

    def setData(self, data):
        self.data = data
        self.notify()

    def getData(self):
        return self.data


class HexViewer:
    def update(self, subject):
        print 'HexViewer: Subject %s has data 0x%x' % (subject.name, subject.getData())


class DecimalViewer:
    def update(self, subject):
        print 'DecimalViewer: Subject %s has data %d' % (subject.name, subject.getData())


# Example usage...
def 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.setData(10)
    print "Setting Data 2 = 15"
    data2.setData(15)
    print "Setting Data 1 = 3"
    data1.setData(3)
    print "Setting Data 2 = 5"
    data2.setData(5)
    print "Detach HexViewer from data1 and data2."
    data1.detach(view2)
    data2.detach(view2)
    print "Setting Data 1 = 10"
    data1.setData(10)
    print "Setting Data 2 = 15"
    data2.setData(15)

if __name__ == '__main__':
    main()  
## end of http://code.activestate.com/recipes/131499/ }}}
分享到:
评论

相关推荐

    python 3.4.4

    python对xp支持的最后版本为3.4.4 https://www.python.org/ftp/python/3.4.4/python-3.4.4.msi 安装过程一直下一步即可。 完了之后设置环境变量。 在 Windows 设置环境变量 找到系统环境变量的path 添加 C:\...

    python 3.11.5

    python官网下载的python3.11.5,包含以下python安装包: Gzipped source tarball XZ compressed source tarball macos 64-bit universal2 installer Windows embeddable package (32-bit) Windows embeddable ...

    python3.12.3环境

    python3.12.3环境

    python2.7.17安装包

    Python 2.7.17 是 Python 语言的一个重要版本,尤其对于那些仍然依赖于旧代码库或系统的人来说,它是必不可少的。这个安装包是专为64位(AMD64)架构设计的,适用于Windows操作系统。在本文中,我们将深入探讨Python...

    python3.12.2版本

    python3.12.2版本

    Python 八股文.pdf

    Python是一种高级编程语言,以其简洁明了的语法和丰富的标准库而受到广泛欢迎。"Python八股文"可能指的是对Python基础知识的一种系统性总结。在Python中,有以下几个关键概念值得深入探讨: 1. **内置电池...

    python入门奶牛问题

    python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题...

    Python零基础入门到精通基Python100个源码实例.zip

    Python零基础入门到精通Python零基础入门到精通学习教程--Python零基础入门到精通Python零基础入门到精通学习教程--Python零基础入门到精通Python零基础入门到精通学习教程--Python零基础入门到精通Python零基础入门...

    Python懒人便携版本

    Windows上专为懒人使用,Python3.12 32位绿色便携包,仅仅包含Pip,解压即可使用。压缩包仅仅24M,比Sourceforget还小WINDOWS上 打造自己的移动Python环境 最终成品

    python3.12.8软件包

    python3.12.8软件包,方便下载

Global site tag (gtag.js) - Google Analytics