## {{{ 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对xp支持的最后版本为3.4.4 https://www.python.org/ftp/python/3.4.4/python-3.4.4.msi 安装过程一直下一步即可。 完了之后设置环境变量。 在 Windows 设置环境变量 找到系统环境变量的path 添加 C:\...
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环境
Python 2.7.17 是 Python 语言的一个重要版本,尤其对于那些仍然依赖于旧代码库或系统的人来说,它是必不可少的。这个安装包是专为64位(AMD64)架构设计的,适用于Windows操作系统。在本文中,我们将深入探讨Python...
python3.12.2版本
Python是一种高级编程语言,以其简洁明了的语法和丰富的标准库而受到广泛欢迎。"Python八股文"可能指的是对Python基础知识的一种系统性总结。在Python中,有以下几个关键概念值得深入探讨: 1. **内置电池...
python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题python入门奶牛问题...
Python零基础入门到精通Python零基础入门到精通学习教程--Python零基础入门到精通Python零基础入门到精通学习教程--Python零基础入门到精通Python零基础入门到精通学习教程--Python零基础入门到精通Python零基础入门...
Windows上专为懒人使用,Python3.12 32位绿色便携包,仅仅包含Pip,解压即可使用。压缩包仅仅24M,比Sourceforget还小WINDOWS上 打造自己的移动Python环境 最终成品
python3.12.8软件包,方便下载