编程语言
首页 > 编程语言> > python插件化开发

python插件化开发

作者:互联网

动态导入

运行时,根据用户需求(提供字符串),找到模块的资源动态加载起来。

sys=__import__('sys)等价于import sys
#在 xyz.py
class A:
    def show(self0):
        print('123')
#在 主程序模块
if __name__=="__main__":
    mod=__import__('xyz')
    cls=getattr(mod,'A')
    cls().show()

在这里插入图片描述

#xyz.py
class A:
    def show(self0):
        print('123')
# 主程序模块
import importlib
def plugin(name:str,sep=':'):
    m , _, c=name.partition(sep)
    mod=importlib.import_module(m)
    cls=getattr(mod,c)
    return cls()
if __name__=='__main__':
    a=plugin('xyz:A')
    a.show()

在这里插入图片描述

插件化编程技术

依赖的技术
反射:运行时获取类型的信息,可以动态维护类型数据
动态import:推荐使用importlib模块,实现动态import模块的能力
多线程:可以开启一个线程,等待用户输入,从而加载指定名称的模块。

加载的时机

标签:__,插件,name,show,python,开发,import,importlib
来源: https://blog.csdn.net/qq_36883141/article/details/90731318