简单的信号/时隙实现

signaling的Python项目详细描述


https://img.shields.io/pypi/v/signaling.svg?style=flat-squarehttps://img.shields.io/travis/mdomke/signaling/master.svg?style=flat-squarehttps://img.shields.io/pypi/l/signaling.svg?style=flat-squarehttps://img.shields.io/coveralls/mdomke/signaling.svg?style=flat-square

这是什么?

signalingsignal/slot patternas的简单实现 从Qt framework知道。 它没有外部要求和100%的测试覆盖率。

安装

通常的

pip install signaling

如何使用?

假设您有一个函数,当连接的信号 发出,如下代码块所示:

defslot(arg):print("Slot called with {}".format(arg))signal=Signal(args=['arg'])signal.connect(slot)signal.emit(arg=1)# Slot called with 1

实际上,您可以将多个插槽连接到同一个信号,只要它们共享 相同的函数签名。

注意,signaling库在连接时执行一些健全性检查 插槽和发射信号。

  • 连接到信号的所有插槽都必须提供与 由Signal构造函数的args参数表示。
  • 必须使用与 Signal构造函数。

因此,下面的所有示例都会引发一个异常:

defslot_with_arg(arg):passdefslot_without_arg():pass# InvalidSlot: Slot 'slot_with_arg' has to callable without argumentsSignal().connect(slot_with_arg)# InvalidSlot: Slot 'slot_without_args' has to accept args ['arg'] or **kwargs.Signal(args['arg']).connect(slot_without_arg)s=Signal()s.connect(slot_without_args)# InvalidEmit: Emit has to be called without arguments.s.emit(foo=1)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中使用BufferedReader类读取文本文件的子字符串   java如何在JSP页面上包含来自另一台服务器的动态JSP   使用单表策略的java持久化Hibernate继承映射   java报告状态失败达600秒。谋杀!报告hadoop的进展   java将字符串解析为形状   使用JTable的java ClassCastException?   java在Spring引导中关闭数据库   java Android Studio调试错误(Ubuntu)   java如何区分apache beam中KV实例中的两个键?   java将RealmObjectChangeListener添加到异步下载的RealmObject   java匹配模式之前的所有内容,包括新行和/或回车   java使用JAXB在XML中动态更改元素序列   java如何在MACOS中找到动态库(.dylib文件)的版本   Android中的java Nanohttpd服务器   java libGDX:3d动画不工作