猿问

制作类似插件系统的东西

我想制作类似插件系统的东西,但无法使其正常工作。具体来说,我有一些要求。


我有主要脚本谁应该在./plugins目录中搜索其他python脚本并加载它们。该主脚本正在搜索使用以下方法从Base继承的类globals()


如果我将这些类放在相同的主文件中,则效果很好,但我无法按需运行。


是否可以在Python中执行此操作?


我尝试做这样的事情:


资料来源:plugins / test.py


class SomeClass(Base):

    def __init__(self):

        self.name = "Name of plugin"

主脚本仅在此类上执行一些方法。


交互式爱情
浏览 115回答 3
3回答

HUX布斯

您可以动态导入python文件,也可以使用该exec语句(确保定义要在其中执行的上下文,否则将使用您在其中使用该语句的上下文)。然后使用Base.__subclasses__,假设Base它是一种新型类,或者从导入的插件模块中调用一个函数。在后一种情况下,您必须提供插件注册机制。
随时随地看视频慕课网APP

相关分类

Python
我要回答