将 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: 任何对象
* 通知的任何附加信息
这个包实现了一个类似于 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
查看哈希)
内置分布
关
notificationcenter- 1.0.0b2 -py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f911d87bf45d723bd4996f98237ac5ddb424ab17dd32a18f375e05e9e87a6406 |
|
MD5 | c9d864de088b2f0ecd86af8df3e1e727 |
|
布莱克2-256 | a9faccd3c4f8f4c9516a12e1da643b67d8c3aad8226ccbe2f4ccf95d14b40377 |