python做软件插件_Python-插件化开发
1、动态导入:
运行时,根据用户需求(提供字符串),找到模块的资源动态加载起来。
2、内建函数__import__()
def __import__(name, globals=None, locals=None, fromlist=(), level=0):
name:模块名
import语句本质上就是调用这个函数,但是不鼓励直接使用它,建议使用importlib.import_module()。
sys = __import__('sys')等价于import sys
测试 直接调用:
测试 可以动态交互加载模块:
1 if __name__ == '__main__':2 name = input('>>>')3 mod = __import__(name) #import tt
4 cls = getattr(mod, 'A')5 cls().showme()
2、importlib.import_module()
1 importimportlib2 importlib.import_module(name, package=None)
支持绝对导入 和 相对导入,如果是相对导入,package必须设置。
测试:插件化编程的核心代码。
相对导入:
3、插件化编程技术:
依赖的技术:
反射:运行时获取类型的信息,可以动态维护类型数据。
动态import:推荐使用importlib 模块,实现动态import模块的能力。
多线程:可以开启一个线程,等待用户输入,从而加载指定名称的模块。
加载的时机:
1、程序启动时:
像pycharm 这样的工具,需要很多组建,这些组件也可能是插件,启动的时候,扫描固定的目录,加载插件
2、程序运行中:
程序运行过程中,接受用户指令或请求,启动相应的插件。
两种当时各有利弊,如果插件过多,或导致程序启动很慢,如果用户需要时加载,如果产检太大或者依赖多,插件也会启动慢
所以先加载必须的,常用的插件,其他插件使用时,在动态载入。
4、应用:
软件的设计不可能完美,或者在某些功能上,不可能做的专业,需要专业的客户增强。如PS
5、接口和插件的区别:
接口往往是暴露出来的功能,例如模块提供的函数或方法,加载模块后嗲用这些函数完成功能,
接口也是一种规范,它约定了必须是此案的功能(必须提供某名称的函数), 但是不关心怎么实现这个功能。
插件是把模块加载到系统中,运行它,增强当前系统功能,或者提供系统不具备的功能,往往插件技术应用在框架设计中,系统本身设计简单化,轻量级,实现基本功能后,其他功能通过插件加入进来,方便扩展。
python做软件插件_Python-插件化开发相关推荐
- python组件化软件策划_Vue组件化开发
一. 通过axios实现数据请求 1. json简介 json是 JavaScript Object Notation 的首字母缩写,单词的意思是javascript对象表示法,这里说的json指的是 ...
- 用python做软件开发有前途吗_做软件开发有前途吗?
作为一名IT行业的从业者,我来回答一下这个问题. 虽然互联网领域的持续快速发展,尤其是近些年来移动互联网领域的发展,在很大程度上促进了IT行业领域对于开发人才的需求,但是目前要想找到一份适合自己的软件 ...
- 用python做自我介绍_python入门教程NO.2 用python做个自我介绍
本文涉及的python基础语法为:数据类型等 数据类型 1. 字符串的拼接 我们在上一章中已经简单介绍了一下字符串的创建方式,这里我们简单学习一下字符串的运算和拼接. 字符串的运算 `字符串的加法` ...
- 软件设计师(结构化开发)
结构化开发 模块独立 每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简单 耦合(低) 是模块之间的相对独立性的度量.耦合取决于每个模块之间接口的复杂程度.调用模块的方式以及通过接口的信 ...
- python做时序图_python如何做时间序列
python做时间序列的方法:首先导入需要的工具包,输入"data.plot()","plt().show()"命令绘制时序图:然后由acf,pacf判断模型参 ...
- python加载机制_Python插件机制实现详解
插件机制是代码/功能反向依赖注入到主体程序的一种方法,编译型语言通过动态加载动态库实现插件.对于Python这样的脚本语言,实现插件机制更简单. 机制 Python的__import__方法可以动态地 ...
- python做abaqus后处理_python进行abaqus后处理的二次开发,我想提取odb文件中的nodeSet,结果总提示Keyerror,请各位大神指教。...
运行: Cmd中运行:abaqus scrip=plot.py 之所以用python因为abaqus的界面是基于python的,用它来进行批处理或者后处理是比较不错的,希望能和大家分享abaqus的更 ...
- python编程软件排行榜_Python编程开发工具:这10个对Web开发者最有用的Python包
Python编程一时间成为了开发人员最喜欢的语言之一.无论是专业的,业余的,还是作为一个Python初学者,都可以从Python编程语言及其程序包中受益.Python已经被证明是当今最具活力的面向对象 ...
- python怎么做软件界面_python – 如何自定义桌面应用程序的标题栏和窗口
我如何自定义标题栏(包括:关闭,最大化,最小化按钮,标题)和用PyQt编写的桌面应用程序框架,使其看起来像下面的图像?我需要一种方法来指定我想用于标题栏元素的颜色(按钮,文本标题和条形和按钮的背景颜色 ...
最新文章
- 用存储过程生成记录编号
- windows下安装python mysqldb
- ecshop 后台添加评论_如何提升外卖营业额?评论回复不可忽视
- 插值方法——Lagrange插值公式
- 关于浏览器模式和文本模式的困惑
- vb.net 弹出对话框 修改按钮名_Microsoft Excel怎么批量快速修改批注?
- 项目管理学习总结(2)——需求收集和管理
- Docker系列(二):Docker安装
- 线上四台机器同一时间全部 OOM,到底发生了什么?
- java商城项目_javaweb实战之商城项目开发(一)
- php 1个中文几个字节,PHP函数第15款:gbk中文截取,1个中文字节为2个英文字节 cn_substr...
- 【优化调度】基于改进遗传算法的公交车调度排班优化的研究与实现(Matlab代码实现)
- 哈希加密matlab,图像加密算法之基于Hash函数和多混沌系统的加密
- Word中删除指定页的页眉和页脚 + 删除第一页空白页 (简单、有效)
- 计算机中的随机存储器和只读存储器是什么,只读存储器和随机存储器的主要区别是什么...
- Ubuntu下Rhythmbox乱码的解决办法
- Mybatis查询oracle之clob类型
- 本地摄像头应用到远程计算机,3个可在iPad / iPhone上远程查看网络摄像头的应用 | MOS86...
- java使用递归,复制文件夹下的所有子文件
- Nvidia Tensor Core-MMA PTX编程入门
热门文章
- 自考计算机辅助设计真题07075,07075计算机辅助设计.doc
- Android q索尼手机相机算法,索尼相机很强为何索尼手机拍照DxO垫底?没有针对性优化...
- 【潜渊症 | 万字解析】模组制作研究讲义
- (手机版)生产人员计件扫码系统
- 高校暑期社会实践微信小程序的设计与实现
- Uiautomation 在Windows WPF和Qt 产品上的应用
- HOG特征详解:Histograms of Oriented Gradients for Human Detection
- 数字图像处理——图像分割
- 11.15luffycity(7)
- 如何制作照片蒙太奇效果?