思潮课程 / 后端开发 / 正文

python调查者形式,深化解析Python中的调查者形式及其使用

2025-01-04后端开发 阅读 3

调查者形式(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\

猜你喜欢

  • delphi开发东西,delphi7中文破解版下载后端开发

    delphi开发东西,delphi7中文破解版下载

    Delphi是一种强壮的编程言语和集成开发环境(IDE),由EmbarcaderoTechnologies开发。它开始由Borland公司于1995年推出,首要用于Windows渠道的使用程序开发。Delphi是根据Objec...

    2025-01-06 0
  • c言语回来数组,C言语中函数回来数组的完成办法与留意事项后端开发

    c言语回来数组,C言语中函数回来数组的完成办法与留意事项

    在C言语中,函数不能直接回来一个数组,由于数组在内存中是接连的,而函数回来的是一个值,不能直接回来一个内存区域的地址。不过,你能够经过几种办法直接地回来一个数组:1.回来指向数组的指针:你能够创立一个数组,然后回来它的指针。调用者需求担任...

    2025-01-06 0
  • python衔接数据库,入门与实践后端开发

    python衔接数据库,入门与实践

    衔接数据库一般需求以下几个过程:1.确认数据库类型(如MySQL、PostgreSQL、SQLite等)。2.装置相应的数据库驱动或库(如`mysqlconnectorpython`、`psycopg2`、`sqlite3`等)。3....

    2025-01-06 0
  • java呼应式编程, 什么是呼应式编程后端开发

    java呼应式编程, 什么是呼应式编程

    Java呼应式编程是一种编程范式,它着重的是编写异步、非堵塞、事情驱动的代码。这种编程方法一般用于构建可扩展性和功能要求高的运用程序,特别是在处理很多并发恳求或事情时。在Java中,呼应式编程一般是经过运用呼应式流(ReactiveStr...

    2025-01-06 0
  • go并发编程后端开发

    go并发编程

    Go言语(也称为Golang)是一种由Google开发的开源编程言语,它被规划用于构建简略、牢靠且高效的软件。Go言语的一个明显特点是其对并发编程的支撑,这使它成为处理很多并发使命和创立高并发应用程序的抱负挑选。Go并发编程的中心概念1....

    2025-01-06 0
  • r言语和python哪个简略,哪个更适合数据剖析新手入门?后端开发

    r言语和python哪个简略,哪个更适合数据剖析新手入门?

    R言语和Python都是功能强壮的编程言语,它们各自有共同的优势和使用范畴。简略与否往往取决于个人的编程布景、学习意图以及具体使命的需求。R言语R言语首要规划用于核算剖析、图形表明和陈述编撰。它在数据剖析和可视化方面有很强的优势,尤其是关...

    2025-01-06 0
  • python网课,从入门到通晓的全方位教程后端开发

    python网课,从入门到通晓的全方位教程

    1.千锋教育Python900集(学完可工作/2019版)这门课程十分全面,合适自学人群查漏补缺,合适想要全面学习Python的同学。2.Python编程从入门到实践这门课程有配套的纸质书本,内容深化浅出...

    2025-01-06 0
  • python开发,从根底到实战后端开发

    python开发,从根底到实战

    您好!请问您是想了解关于Python开发方面的哪些详细问题呢?例如:Python编程根底Python数据剖析Python机器学习PythonWeb开发Python爬虫Python自动化测验Pyth...

    2025-01-06 0