如何在yapsy插件中定义类别?

2024-06-15 02:21:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这个结构中使用雅普赛:

script.py
plugins
 |-equipments
 | |-eq1.py
 | |-eq1.yapsy-plugin
 |-tasks
   |-tsk1.py
   |-tsk1.yapsy-plugin 

在脚本.py在

^{pr2}$

它工作得很好。但是如何使不同目录下的插件有不同的类别呢?在


Tags: py目录脚本插件scriptplugins类别结构
1条回答
网友
1楼 · 发布于 2024-06-15 02:21:30

yapsy中的类别不是通过目录检测的,而是通过每个插件实例继承的类来检测的。在

例如,对于您的应用程序,您可以让您的“设备”插件继承一个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。在

相关问题 更多 >