这是一个轻量级的模块化开发框架
更新时间:2019/7/17
python3+
- 动态加载目录里的模块文件
- 通过代码加载模块
- Project
- main.py
- Plugin
- pluginmanager.py
- MyPlugin1
- MyPlugin1.py
- Resources
- nesting.py
- MyPlugin2
- MyPlugin2.py
- Resources
- nesting.py
- ...
函数名 | 参数 | 返回值 | 注释 |
---|---|---|---|
addPathPlugin | string | [successPath,fail] | 载入所在目录模块 |
addPlugin | dict | Null | 载入实例化对象 |
getAllPlugin | Null | dict | 获取模块dict集合 |
delPlugin | string | bool | 删除指定模块 |
hasPlugin | string | bool | 查看模块是否存在 |
-
动态加载目录方式:
-
将 pluginmanager.py 导入项目中,建立好相关文件夹后把模块文件放入其中。
-
模块文件名与文件夹名一致,并在要在模块文件内编写一个 class 名为模块名
-
例如: PathTest 模块。
- Project
- main.py
- TestPlugin
- pluginmanager.py
- PathTest
- PathTest.py
- Resources
- logo.jpg
- my.mp3
#! /usr/bin/python3 # -*- coding:utf-8 -*- from TestPlugin.pluginmanager import pluginManager #框架模块 from TestPlugin.pluginmanager import pluginError #框架异常处理模块 MyPlugin = pluginManager() #实例化框架模块 successPath,failPath = MyPlugin.addPathPlugin("TestPlugin") #执行加载模块目录,返回 [成功目录,失败目录及原因] print("加载成功模块目录: " + str(successPath) ) print("加载失败模块目录: " + failPath.dir + "失败原因:" + failPath.content) try: MyPlugin.test.Fun() #调用模块里的方法 except pluginError as Error: #没有此模块 print(Error) except AttributeError as Error: #此模块里没有所调用的方法 print(str(Error))
class test: def __init__(self): print(" test 初始化 ") def Fun(self): print("hello World") if __name__ != "__main__": print("我test被加载了")
-
-
通过代码加载模块方式:
-
实例化对象,并定义模块名称与对象放到 dict 类型里
-
例如: cordPlugin 模块
- Project
-
main.py
-
cordPlugin.py
-
pluginmanager.py
-
#! /usr/bin/python3 # -*- coding:utf-8 -*- from Plugin.pluginmanager import pluginManager from Plugin.pluginmanager import pluginError import cordPlugin if __name__ == "__main__": MyPlugin = pluginManager() cordPlugin1 = cordPlugin.staticPlugin('我是模块1') #实例化第一个模块 cordPlugin2 = cordPlugin.staticPlugin('我是模块2') #实例化第二个模块 MyPlugin.addPlugin( **{"cord1":cordPlugin1,"cord2":cordPlugin2 } ) #将模块的实例化加载到框架里 try: MyPlugin.cord1.test() #调用模块里的方法 MyPlugin.cord2.test() except pluginError as Error: #没有此模块 print(Error) except AttributeError as Error: #此模块里没有所调用的方法 print(str(Error))
class cordPlugin: def __init__(self,name): self.name = name def test(self): print("我是用代码导入的模块 %s" % self.name)
-
模块目录及文件请勿以.或 _ 开头。否则此模块将直接跳过不载入
欢迎大佬们来技术交流 QQ:1170941265