如何用Python语言实现观察者模式
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"如何用Python语言实现观察者模式",在日常操作中,相信很多人在如何用Python语言实现观察者模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如
千家信息网最后更新 2026年10月31日如何用Python语言实现观察者模式
这篇文章主要介绍"如何用Python语言实现观察者模式",在日常操作中,相信很多人在如何用Python语言实现观察者模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何用Python语言实现观察者模式"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
示例代码
首先是定义的观察对象基类Observable基类。这个类简单地实现了观察者登录和取消登录以及通知方法。这些方法会在派生类中使用。
# 观察对象基类class Observable: def __init__(self): self.observers= [] def attach(self, observer): print(type(observer), 'has beenattached!') self.observers.append(observer) def detach(self, observer): print(type(observer), 'has beendetached!') self.observers.remove(observer) def notify(self): for oin self.observers: o.update()
接下来是具象观察对象类。这个类的职责是在自身状态发生变化时调用基类接口向登录的观察者发出更新通知。
# 观察对象具象类class ConcreteObservable(Observable):def __init__(self):Observable.__init__(self)self.state= Nonedef set_state(self, state):self.state= stateself.notify()def get_state(self):return self.state
实际的观察者类只需要实现观察对象基类在通知时希望的update接口即可,具体如下:
# 观察者具象类class ConcreteObserver(Observer): def __init__(self,observable): Observer.__init__(self) self.observable= observable def update(self): print(type(self), self.observable.get_state())
下面的演示代码在分别构建Observable和Observer的具象类对象后,将Observer对象注册到Observable对象上。当改变Observable对象的状态时,可以得到状态变化的输出。观察者被删除之后再次改变Observable的状态,则无法得到状态变化的输出。
# 主程序if __name__ == '__main__': observable = ConcreteObservable() # 构建观察者 observer= ConcreteObserver(observable) # 观察者注册 observable.attach(observer) # 改变观察对象状态,产生输出 observable.set_state('State Changed1!') # 观察者删除 observable.detach(observer) # 再次改变观察对象状态,不产生输出 observable.set_state('State Changed2!')演示程序的输出如所示:
has been attached! has been attached! State Changed1! State Changed1! has been detached! State Changed2!
到此,关于"如何用Python语言实现观察者模式"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
观察
观察者
对象
状态
输出
模式
语言
具象
学习
方法
变化
登录
接下来
代码
再次
接口
更多
帮助
演示
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
美国互联网科技
互联网科技的未来发展
互联网科技股有哪些
佩信高科技互联网
互联网实体化科技化
江苏南京365互联网科技
宁波青枫互联网科技有限公司
互联网经济与金融科技
互联网科技与管理
辽宁互联网新科技
银川新华互联网科技学校联系电话
互联网科技公司营业执照怎么办理
恒生互联网科技业指数调整周期
江苏互联网智能科技软件
半导体行业属于互联网高科技类吗
广州有谷有贝互联网科技有限公司
广州智享互联网科技
唯美互联网科技
玉溪新华互联网科技怎么选
武汉亿视互联网科技有限公司
美国互联网保险保险科技
互联网科技论文
深圳市运趣互联网科技有限公司
互联网金融科技公司干啥的
赶超互联网科技 微信多开
坤平互联网科技
朱啸虎曾投资哪些互联网科技企业
互联网金融科技公司的优势
张召忠谈中国互联网科技
互联网时代高科技布局