Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在yapsy插件中定义类别?_Python_Plugins - Fatal编程技术网

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

Python 如何在yapsy插件中定义类别?,python,plugins,Python,Plugins,我在此结构中使用yapsy: script.py plugins |-equipments | |-eq1.py | |-eq1.yapsy-plugin |-tasks |-tsk1.py |-tsk1.yapsy-plugin 它很好用。但是如何使不同目录中的插件具有不同的类别?yapsy中的类别不是由目录检测的,而是通过每个插件实例继承的类来检测的 例如,在应用程序中,您可以让“设备”插件继承IEquipementPlugin类,而“任务”插件继承ITaskPlugin

我在此结构中使用yapsy:

script.py plugins |-equipments | |-eq1.py | |-eq1.yapsy-plugin |-tasks |-tsk1.py |-tsk1.yapsy-plugin
它很好用。但是如何使不同目录中的插件具有不同的类别?

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

例如,在应用程序中,您可以让“设备”插件继承
IEquipementPlugin
类,而“任务”插件继承
ITaskPlugin

然后,在配置插件管理器时,只需给出类别名称与其各自基类之间的映射:

# Define the various categories corresponding to the different
# kinds of plugins you have defined
manager.setCategoriesFilter({
   "Equipement" : IEquipementPlugin,
   "Task" : ITaskPlugin,
   })
注意一个警告,它使您的一个类别由定义另一个类别的类别的子类别定义(插件管理器将被混淆),请参阅和

另请参见yapsy的文档:

我知道Yapsy的文档在示例方面仍然很差[1],但是在单元测试中有插件类别的工作示例

在一些现实项目中也有类别的例子。例如,在mathbench中:(yapsy最初设计为它的一个子组件)和yapsy文档中列出的其他项目,请参见

[1] :很抱歉,我没有太多时间,但我尝试通过考虑像您这样的用户反馈来逐步改进yapsy及其文档