python调查者形式,深化解析Python中的调查者形式及其使用
调查者形式(Observer Pattern)是一种行为规划形式,它界说了目标之间的一对多依靠联系,当一个目标改动状况时,一切依靠于它的目标都会得到告诉并自动更新。
调查者形式首要包括以下人物:
1. Subject(主题/被调查者):主题目标是被调查的目标,它保护一个调查者列表,并供给增加和删去调查者的办法。当主题目标的状况产生改变时,它会告诉一切调查者。2. Observer(调查者):调查者目标依靠于主题目标,它完成了更新接口,以便在主题目标状况产生改变时得到告诉。3. ConcreteSubject(详细主题):详细主题是主题类的子类,它保护主题的状况并供给改动状况的办法。当状况改动时,它会告诉一切调查者。4. ConcreteObserver(详细调查者):详细调查者是调查者类的子类,它完成了更新接口,并在收到告诉时更新自己的状况。
下面是一个简略的调查者形式的完成示例:
```pythonfrom abc import ABC, abstractmethod
调查者接口class Observer: @abstractmethod def update: pass
主题接口class Subject: def __init__: self._observers =
def attach: self._observers.append
def detach: self._observers.remove
def notify: for observer in self._observers: observer.update
详细主题class ConcreteSubject: def __init__: super.__init__ self._state = None
@property def state: return self._state
@state.setter def state: self._state = value self.notify
详细调查者class ConcreteObserver: def __init__: self._subject = subject self._subject.attach
def update: print
示例subject = ConcreteSubjectobserver_a = ConcreteObserverobserver_b = ConcreteObserver
subject.state = 123```
在这个示例中,`ConcreteSubject` 是一个详细的主题,它保护一个调查者列表并在状况改动时告诉它们。`ConcreteObserver` 是一个详细的调查者,它在主题状况改动时打印出新的状况。当 `subject.state` 被设置为 `123` 时,一切调查者都会收到告诉并更新。
深化解析Python中的调查者形式及其使用
调查者形式(Observer Pattern)是一种规划形式,它界说了一种一对多的依靠联系,当一个目标的状况产生改动时,一切依靠于它的目标都将得到告诉并自动更新。在Python中,调查者形式广泛使用于事情驱动编程和异步编程中,能够有效地解耦目标之间的依靠联系,进步代码的可保护性和扩展性。
调查者形式的中心思维是“订阅-告诉”机制。在这个形式中,存在两个首要人物:调查者(Observer)和被调查者(Subject)。被调查者担任保护一个调查者列表,当其状况产生改变时,会告诉列表中的一切调查者。调查者则担任监听被调查者的状况改变,并在改变产生时做出相应的呼应。
在Python中,咱们能够经过界说类来完成调查者形式。以下是一个简略的调查者形式完成示例:
```python
class Subject:
def __init__(self):
self._observers = []
def register_observer(self, observer):
if observer not in self._observers:
self._observers.append(observer)
def unregister_observer(self, observer):
if observer in self._observers:
self._observers.remove(observer)
def notify_observers(self, message):
for observer in self._observers:
observer.update(message)
class Observer:
def update(self, message):
pass
class ConcreteObserver(Observer):
def update(self, message):
print(f\
- 上一篇:r言语地图,R言语地图制作入门攻略
- 下一篇:c言语代码大全
猜你喜欢
- 后端开发
delphi开发东西,delphi7中文破解版下载
Delphi是一种强壮的编程言语和集成开发环境(IDE),由EmbarcaderoTechnologies开发。它开始由Borland公司于1995年推出,首要用于Windows渠道的使用程序开发。Delphi是根据Objec...
2025-01-06 0 - 后端开发
c言语回来数组,C言语中函数回来数组的完成办法与留意事项
在C言语中,函数不能直接回来一个数组,由于数组在内存中是接连的,而函数回来的是一个值,不能直接回来一个内存区域的地址。不过,你能够经过几种办法直接地回来一个数组:1.回来指向数组的指针:你能够创立一个数组,然后回来它的指针。调用者需求担任...
2025-01-06 0 - 后端开发
python衔接数据库,入门与实践
衔接数据库一般需求以下几个过程:1.确认数据库类型(如MySQL、PostgreSQL、SQLite等)。2.装置相应的数据库驱动或库(如`mysqlconnectorpython`、`psycopg2`、`sqlite3`等)。3....
2025-01-06 0 - 后端开发
java呼应式编程, 什么是呼应式编程
Java呼应式编程是一种编程范式,它着重的是编写异步、非堵塞、事情驱动的代码。这种编程方法一般用于构建可扩展性和功能要求高的运用程序,特别是在处理很多并发恳求或事情时。在Java中,呼应式编程一般是经过运用呼应式流(ReactiveStr...
2025-01-06 0 - 后端开发
go并发编程
Go言语(也称为Golang)是一种由Google开发的开源编程言语,它被规划用于构建简略、牢靠且高效的软件。Go言语的一个明显特点是其对并发编程的支撑,这使它成为处理很多并发使命和创立高并发应用程序的抱负挑选。Go并发编程的中心概念1....
2025-01-06 0 - 后端开发
r言语和python哪个简略,哪个更适合数据剖析新手入门?
R言语和Python都是功能强壮的编程言语,它们各自有共同的优势和使用范畴。简略与否往往取决于个人的编程布景、学习意图以及具体使命的需求。R言语R言语首要规划用于核算剖析、图形表明和陈述编撰。它在数据剖析和可视化方面有很强的优势,尤其是关...
2025-01-06 0 - 后端开发
python网课,从入门到通晓的全方位教程
1.千锋教育Python900集(学完可工作/2019版)这门课程十分全面,合适自学人群查漏补缺,合适想要全面学习Python的同学。2.Python编程从入门到实践这门课程有配套的纸质书本,内容深化浅出...
2025-01-06 0 - 后端开发
python开发,从根底到实战
您好!请问您是想了解关于Python开发方面的哪些详细问题呢?例如:Python编程根底Python数据剖析Python机器学习PythonWeb开发Python爬虫Python自动化测验Pyth...
2025-01-06 0