python的插件和钩子调用机制

aioplugg的Python项目详细描述


Documentation Status

read the docs了解更多!

一个明确的例子

importaiopluggy,asynciohookspec=aiopluggy.HookspecMarker("myproject")hookimpl=aiopluggy.HookimplMarker("myproject")classMySpec(object):"""A hook specification namespace.
    """@hookspecdefmyhook(self,arg1,arg2):"""My special little hook that you can customize.
        """classPlugin_1(object):"""A hook implementation namespace.
    """@hookimpl.asyncioasyncdefmyhook(self,arg1,arg2):print("inside Plugin_1.myhook()")returnarg1+arg2classPlugin_2(object):"""A 2nd hook implementation namespace.
    """@hookimpldefmyhook(self,arg1,arg2):print("inside Plugin_2.myhook()")returnarg1-arg2asyncdefmain():# create a manager and add the specpm=aiopluggy.PluginManager("myproject")pm.register_specs(MySpec)# register pluginsawaitpm.register(Plugin_1())awaitpm.register(Plugin_2())# call our `myhook` hookresults=awaitpm.hook.myhook(arg1=1,arg2=2)print(results)asyncio.get_event_loop.run_until_complete(main())

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

推荐PyPI第三方库


热门话题
spring使用Java n的简单日志外观作为SpringBoot应用程序   带EJB的java JPA:无持久性提供程序   java为什么程序在第二行和第三行打印不正确?   java如何配置RESTURI以响应此uri   需要在Selenium IDE中用java语言生成脚本方面的帮助吗   如何知道字符串的值是否为java数据类型   通过java在excel中的值前面添加0   javajavax。jnlp作为maven依赖项   java如何使用两种不同的方法更改按键时播放器字符的x值   如何在Java中从定制的netty HTTP服务器发送文本和二进制数据?   多线程Java是否可以找到名为的线程并将其转换为类?   网络多播支持在Java交易系统中有什么可能的用途?   java气泡排序(循环2对1)+整数数组到字符串数组?   java Hibernate标准多个表   java为什么JSP表单在Spring MVC中不向控制器发送UTF8?   当从JNI线程调用fork时,Java堆会发生什么情况