提供实用程序来实现可挂接接口
PyTapable的Python项目详细描述
可打印
在
实现可挂接接口的库
:玉米:目录
:草莓:关于项目
pytatable提供了一组实用程序来帮助您在类中实现可挂接接口。这就打开了 解决许多用例的可能性,例如
- 为你的库和框架提供可插入的接口
- 按功能域和服务域划分代码
:sun\u with_face:入门
可以在python项目7.3中使用
$ pip install pytapable
示例
内联挂钩
我们首先创建钩子my_hook
作为消费者,我们可以通过传递tap的名称和回调函数来使用这个钩子
defmy_callback(context,greeting):print(f"Hook says: {greeting}")my_hook.tap('My Tap Name',my_callback)
我们的回调是在执行hook.call(...)
时执行的。回调接收在
hook.call
方法和上下文dict
my_hook.call(greeting="Hi Callback")
功能挂钩
函数钩子不同于内联钩子,因为回调参数是预定义的。在
frompytapableimportCreateHook,HookableMixin,create_hook_nameclassCar(HookableMixin):HOOK_ON_MOVE=create_hook_name('on_move')@CreateHook(name=HOOK_ON_MOVE)defmove(self,speed=10):returnf"Moving at {speed} Mph"
- 开始向Car类添加
HookableMixin
。这是在类方法上安装钩子所必需的。在 - 使用
@CreateHook
修饰符装饰Car.move
方法。在装饰器里,给它一个名字。作为最佳实践 我们将名称定义为一个类常量,这样消费者就可以轻松地引用它。在 - 钩子的值可以是任何值。我们使用
create_hook_name(str)
实用程序来生成一个唯一的名称。 不需要生成一个唯一的名称,但是当从其他类继承钩子时,它变得非常重要。在
defcallback(context,fn_args,fn_output):kmph_speed=fn_args['speed']*1.61print(f"The car is moving {kmph_speed} kmph")c=Car()c.hooks[Car.HOOK_ON_MOVE].tap('log_metric_speed',callback,before=False)c.move(10)
- 在这里,我们进入
on_move
钩子,该钩子在c.move
方法执行后触发回调 c.move()
参数作为fn_args
传递给回调,返回值(如果有)将作为fn_output
传递- 上下文包含一个
is_before
和is_after
标志,它表示回调是在c.move()
之前还是之后执行的
:热带饮料:文件
这里有完整的文档 https://pytapable.readthedocs.io/en/latest
:满意:贡献
贡献使开源社区成为一个值得学习、启发和创造的地方。 您所做的任何贡献都将受到的高度赞赏。在
- 把项目分成两半
- 创建您的功能分支(
git checkout -b feature/AmazingFeature
) - 提交更改(
git commit -m 'Add some AmazingFeature'
) - 推到分支(
git push origin feature/AmazingFeature
) - 打开拉取请求
要在本地测试更改,请运行:
$ pip install -r test_requirements.txt $ tox .
这将在python-2和python-3上运行您的更改
任何新更改的文档都是必须的。我们使用Sphinx和来构建 本地文档,运行:
$ cd docs/ $ make html # or on windows $ make.bat html
:v:许可证
分布在Apache License下
- 项目
标签: