如何使用插件提供扩展Python程序的API?

Nik*_*s R 5 python api plugins extend

我想知道如何为我的Python程序提供API以使其他人能够使用插件扩展它.我想到了类似的东西from myProgram.plugins import aClassToExtendByOthers, registerThatClass.但我不知道如何提供这个.

我可以在我的loadPlugins函数中为plugins-folder中的每个插件使用一个exec语句,但这不会导致我想要为人们编写这些插件的内容.

Mic*_*ith 2

对于我在多个程序中使用的系统,我定义了一个插件目录,并为所有插件提供了一个基本插件类以进行子类化。然后,我导入目录中的所有模块,并有选择地初始化(通过检查它们是否是我的基本插件类的子类),并将插件的实例存储在字典(或列表)中。我发现命令调度模式作为构建插件和传递事件的一种方式对我来说非常有效。基本插件(或另一个可选的接口类)可以提供插件与应用程序交互所需的方法。我希望这有帮助。这可能不是最好的方法,但它对我有用。

此外,您可以进行额外的过滤,例如要求插件文件具有前缀(例如__plug_file.py____plug_other.py__)。