简单的信号/槽实现
项目描述
这是什么?
安装
通常
pip install signaling
如何使用它?
假设您有一个函数,只要发出连接的信号,就应该调用该函数,如以下代码块所示:
def slot(arg):
print("Slot called with {}".format(arg))
signal = Signal(args=['arg'])
signal.connect(slot)
signal.emit(arg=1) # Slot called with 1
事实上,您可以将多个插槽连接到同一个信号,只要它们共享相同的函数签名。
请注意,信号库在连接插槽和发出信号时会执行一些完整性检查。
所有连接到信号的槽都必须提供与Signal构造函数的args参数相同的参数说明。
必须使用与Signal构造函数指定的完全相同的参数进行 emit调用。
因此,以下所有示例都会引发异常:
def slot_with_arg(arg):
pass
def slot_without_arg():
pass
# InvalidSlot: Slot 'slot_with_arg' has to callable without arguments
Signal().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)
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
信令-1.0.0.tar.gz
(11.9 kB
查看哈希)
内置分布
信令-1.0.0-py2.py3-none-any.whl
(5.7 kB
查看哈希)