Skip to main content

方法的 Python 钩子

项目描述

https://img.shields.io/travis/Shir0kamii/pyhooks/master.svg https://img.shields.io/coveralls/Shir0kamii/pyhooks/master.svg

PyHooks 旨在为类公开方法挂钩

地位

此项目已维护,请随时打开问题或拉取请求。

目的

您是否曾经想在方法之前或之后执行代码?PyHooks 从棉花糖的钩子系统中汲取灵感,解决了这个确切的问题。

安装

像任何其他已发布的 python 包一样,您可以通过pip安装它:

pip install pyhooks

如何使用 ?

要使用它,您首先需要实现一个挂钩方法。您可以通过使用@Hook装饰方法来做到这一点。

例如,假设您有一个类在某个时刻保存您的数据(例如数据库)。如果您希望能够插入新行为,您的代码将如下所示:

from pyhooks import Hook


class DatabaseEntry(object):
    @Hook
    def save(self):
        pass # save implementation here

感谢@Hook行,您现在可以使用装饰器@precall_register@postcall_register添加在save方法之前和之后执行的函数。

例如,如果你想在保存之前增加一个版本变量,你可以这样做:

from pyhooks import precall_register


class VersionnedEntry(DatabaseEntry):
    @precall_register("save")
    def increment_version(self):
        self.version += 1

装饰器指令向您的类指示应在作为参数传递给装饰器的保存方法之前运行increment_version 。

例子

您可以在此存储库的示例/目录中找到更多示例。

高级用法

您可以通过在装饰器上下文之外调用它来专门化寄存器装饰器。最后一个示例将产生:

from pyhooks import precall_register

pre_save = precall_register("save")


class VersionnedEntry(DatabaseEntry):
    @pre_save
    def increment_version(self):
        self.version += 1

下载文件

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

源分布

pyhooks-1.0.3.tar.gz (5.0 kB 查看哈希

已上传 source

内置分布

pyhooks-1.0.3-py3-none-any.whl (6.4 kB 查看哈希)

已上传 py3