2024-06-15 02:21:30 发布
网友
我在这个结构中使用雅普赛:
script.py plugins |-equipments | |-eq1.py | |-eq1.yapsy-plugin |-tasks |-tsk1.py |-tsk1.yapsy-plugin
在脚本.py在
它工作得很好。但是如何使不同目录下的插件有不同的类别呢?在
yapsy中的类别不是通过目录检测的,而是通过每个插件实例继承的类来检测的。在
例如,对于您的应用程序,您可以让您的“设备”插件继承一个IEquipementPlugin类,而您的“任务”插件继承一个ITaskPlugin。在
IEquipementPlugin
ITaskPlugin
然后,在配置插件管理器时,只需在类别名称和它们各自的基类之间给出一个映射:
# Define the various categories corresponding to the different # kinds of plugins you have defined manager.setCategoriesFilter({ "Equipement" : IEquipementPlugin, "Task" : ITaskPlugin, })
请注意一个警告,它使得您的一个类别由定义另一个类别的类的子类定义(插件管理器会混淆),请参见related question on stack overflow和{a2}。在
另请参阅yapsy的文档:http://yapsy.sourceforge.net/#more-sophisticated-plugin-classes。在
我知道Yapsy的文档在示例方面仍然很差[1],但是在单元测试中有插件类别的工作示例。在
在一些实际项目中也有一些类别的例子。例如在mathbench:http://mathbench.sourceforge.net/(yapsy最初被设计为它的一个子组件)和yapsy文档中列出的其他项目,请参见http://yapsy.sourceforge.net/index.html#brief-history
[1]:很抱歉,我没有太多时间来做这件事,但我试着通过考虑像你这样的用户反馈来逐步改进yapsy及其doc。在
yapsy中的类别不是通过目录检测的,而是通过每个插件实例继承的类来检测的。在
例如,对于您的应用程序,您可以让您的“设备”插件继承一个
IEquipementPlugin
类,而您的“任务”插件继承一个ITaskPlugin
。在然后,在配置插件管理器时,只需在类别名称和它们各自的基类之间给出一个映射:
请注意一个警告,它使得您的一个类别由定义另一个类别的类的子类定义(插件管理器会混淆),请参见related question on stack overflow和{a2}。在
另请参阅yapsy的文档:http://yapsy.sourceforge.net/#more-sophisticated-plugin-classes。在
我知道Yapsy的文档在示例方面仍然很差[1],但是在单元测试中有插件类别的工作示例。在
在一些实际项目中也有一些类别的例子。例如在mathbench:http://mathbench.sourceforge.net/(yapsy最初被设计为它的一个子组件)和yapsy文档中列出的其他项目,请参见http://yapsy.sourceforge.net/index.html#brief-history
[1]:很抱歉,我没有太多时间来做这件事,但我试着通过考虑像你这样的用户反馈来逐步改进yapsy及其doc。在
相关问题 更多 >
编程相关推荐