gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 17:51:42 25 4
gpt4 key购买 nike

我在这个结构中使用了 yapsy:

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

script.py

from yapsy.PluginManager import PluginManager

# Load the plugins from the plugin directory.
manager = PluginManager()
manager.setPluginPlaces(["plugins"])
manager.collectPlugins()

# Loop round the plugins and initialization.
for plugin in manager.getAllPlugins():
print plugin.plugin_object.init_plugin()
print plugin.path
print plugin.category

它工作正常。但是如何让不同目录下的插件有不同的分类呢?

最佳答案

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 overflowcorresponding bug report

另请参阅 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 及其文档。

关于python - 如何在 yapsy 插件中定义类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8642146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com