Skip to main content

将 NSNotificationCenter 功能移植到 Python

项目描述

# NotificationCenter

这个包实现了一个类似于 NSNotificationCenter 的类,它是 Observer 设计模式的一种变体,来自于 Python 中的 Objective-C 和 Swift。要安装,(很快您将能够)只需使用

pip install notificationcenter

它由一个单例类 NotificationCenter 组成,用于添加观察者和发布通知。要添加观察者,您需要执行以下操作:

```python
from notificationcenter import *

# 获取 NotifiationCenter
notificationcenter = NotificationCenter()
# 定义您在收到通知时要执行的函数。
# 它应该有(发件人,通知名称,通知信息)的参数
# 并且什么都不返回(可以,但是会被丢弃)
def foo(sender, notification_name, info):
# 做点什么
# 添加一个观察者
观察者 = notificationcenter.add_observer(with_block=foo,
for_name="bar")
`` `

现在,如果我们向 NotificationCenter 发布一个名为“bar”的通知,如下所示,上面的函数 foo 将被执行。

```python
notificationcenter = NotificationCenter()
notificationcenter.post_notification(sender=None,
with_name="bar")
```

当你不再使用观察者时,你应该把它从 NotificationCenter 中移除,这样块就不再被执行. 它是按如下方式完成的:

```python
notificationcenter.remove_oberver(observer)
```

详细文档如下,源码注释。

## API 参考

### add\_observer(with\_block, for\_name, for\_sender=None)

添加一个观察者来监听特定类型的通知。

#### 参数:

* with\_block:一些函数接受发送者(任何对象)、通知名称(字符串)和通知信息(任何对象)的参数。任何带有\_block 返回的值都将被忽略。
* 观察到具有此名称/发送者的通知时将执行的函数

* for\_name: String
* 注册观察者的通知的名称。

* for\_sender: 任何对象
* 如果设置了此项,则只接收来自该对象的通知。否则,将收到任何具有正确名称的通知。

#### 返回:

* tuple (String, Any Object, Some Function)
* 这是一个 (for\_name, for\_sender, with\_block) 的元组。除非在 remove\_observer 方法中,否则不能直接使用它。

### remove\_observer(observer)

从活动观察者列表中删除给定的观察者。

#### 参数:

* 观察者:元组(字符串、任何对象、某些函数)
* 这是 add\_observer 返回的元组。

### post\_notification(sender, with\_name, with\_info=None)

使用给定名称和(可选)一些附加信息发布通知。

#### 参数:

* 发件人:任何对象
* 此通知的发件人

* with\_name: String
* 通知的名称

* with\_info: 任何对象
* 通知的任何附加信息

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

notificationcenter-1.0.0b2.tar.gz (20.0 kB 查看哈希)

已上传 source

内置分布

notificationcenter-1.0.0b2-py3-none-any.whl (6.4 kB 查看哈希)

已上传 py3