跳转到主要内容

简约事件系统

项目描述

# 可观察者
[![构建状态](https://travis-ci.cn/timofurrer/observable.svg?branch=master)](https://travis-ci.cn/timofurrer/observable)
[![代码风格:black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)

**pyobservable** 是一个专为Python设计的简约事件系统。它为您提供一个易于使用的接口,在特定事件发生时触发任意函数。

```python
from observable import Observable

obs = Observable()

@obs.on("error")
def error_handler(message)
# 进行一些复杂的错误处理
logging.error(f"发生错误:{message}")

...

def do_time_travel()
# 进行一些时间旅行
...
if year != 1291
obs.trigger("error", "时间旅行到1291未成功")
```

**注意:** 我们只支持Python 3!仅支持Python版本 >= 3.5。对于旧版Python版本,请使用 [v0.3.2](https://pypi.ac.cn/project/observable/0.3.2/)。

## 使用方法

使用 `pip` 从PyPI安装它

pip install 可观察者

完成后,您可以使用 `observable`

```python
from observable import Observable

obs = Observable()
```

## 使用说明

### `on`:使用 `on` 注册事件处理程序
有两种方式可以将函数注册到事件中。
第一种方式是使用装饰器注册事件,如下所示

```python
@obs.on("error")
def error_func(message)
print("错误:%s" % message)
```

第二种方式是通过方法调用注册

```python
def error_func(message)
print("错误:%s" % message)
obs.on("error", error_func)
```

### `once`: 使用 `once` 注册事件处理程序
`once` 与 `on` 类似,但一旦触发事件处理程序,它将被移除且无法再次触发。

### `trigger`: 触发事件
您可以使用 `trigger` 方法触发已注册的事件

```python
obs.trigger("error", "这是我的错误信息")
```

如果找不到事件 `error` 的处理程序,将抛出 `Observable.NoHandlerFound` 异常。

### `off`: 移除处理程序和事件
从指定事件中移除处理程序

```python
obs.off("error", error_func)
```

```python
obs.off("error", [error_func, second_error_func])
```

从指定事件中移除所有处理程序

```python
obs.off("error")
```

清除所有事件

```python
obs.off()
```

### `get_all_handlers`, `get_handlers` 和 `is_registered`: 检查哪些处理程序已注册
假设您注册了以下处理程序

```python
@obs.on("success")
def success_func()
print("成功!")

@obs.on("error")
def error_func(message)
print("错误:%s" % message)
```

然后您可以使用以下方法来检查已注册的处理程序
```python
>>> obs.get_all_handlers()
{'success': [<function success_func at 0x7f7f32d0a1e0>], 'error': [<function error_func at 0x7f7f32d0a268>]}
>>> obs.get_handlers("success")
[<function success_func at 0x7f7f32d0a1e0>]
>>> obs.get_handlers("other_event")
[]
```

***

*<p align="center">此项目发布于 [MIT](LICENSE)。<br>[Timo Furrer](https://tuxtimo.me) 的项目。<br>- :tada: -</p>*


项目详情


下载文件

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

源代码分发

observable-1.0.3.tar.gz (5.8 kB 查看哈希值)

上传时间 源代码

构建分发

observable-1.0.3-py2.py3-none-any.whl (8.1 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面