gpt4 book ai didi

python - 在 Python 中实现插件系统

转载 作者:太空狗 更新时间:2023-10-29 21:10:22 34 4
gpt4 key购买 nike

我正在编写一个应用程序(Minecraft 的服务器包装器),我希望通过插件对其进行扩展。我有一个有效的系统,但我认为从长远来看它可以改进。

我现在的方式是,应用程序调用服务器类中的“get_plugins”方法,首先导入一个名为 pluginutils.py 的文件(pluginutils.py 定义一个 BasePlugin 类,所有插件都是子类),然后循环通过 cmds 目录中的每个 .py 文件,导入它并检查它是否是 BasePlugin 的子类。如果是,它会将它的实例存储在字典中,其键是插件中定义的 cmd 类变量。每当应用程序从服务器收到命令时,它会检查它是否是字典中的键,如果是,则运行存储在字典中的实例的 start 方法,并将从命令中获取的必要参数传递给该方法。

虽然这可行,但我觉得这是一种草率的方法。有没有更好的技术来实现与此类似的系统?我想自己写这个(我不想使用像 zope.interface 这样的东西)因为这是一种学习经验。谢谢。

最佳答案

我已经用不同的平台和语言编写了很多不同的插件架构,我会说您对大多数插件系统的编写方式非常了解。

基本上可以归结为,您的主机和您的插件需要有某种共同的契约(Contract)才能使用;换句话说,您的宿主需要对您的插件有足够的了解,以便它可以传递或共享插件需要的任何公共(public)资源,并且插件需要对宿主有足够的了解才能与这些资源进行交互。

像您所做的那样使用基类和派生类来实现它是一种非常常见的方法。

关于python - 在 Python 中实现插件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6233447/

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