python动态加载包的方法小结


Posted in Python onApril 18, 2016

本文实例总结了python动态加载包的方法。分享给大家供大家参考,具体如下:

动态加载模块有三种方法

1. 使用系统函数__import_()

stringmodule = __import__('string')

2. 使用imp 模块

import imp 
stringmodule = imp.load_module('string',*imp.find_module('string'))
imp.load_source("TYACMgrHandler_"+app.upper(), filepath)

3. 用exec

import_string = "import string as stringmodule"
exec import_string

变量是否存在

1. hasattr(Test,'t')
2. 'var'   in   locals().keys()
3. 'var'   in   dir()
4. vars().has_key('s')

动态增加属性

class Obj(object):
  pass
def main():
  list=["a","b", "c"]
  for i inrange(1,len(list),2):
    Obj = type('Obj',(),{list[i]:lambdaself,s:obj.__setattr__(s.split(" = ")[0],s.split(" = ")[1])})
  obj =Obj()
  for i inrange(0,len(list),2):
    obj.__setattr__(list[i],list[i])  
  obj.a =1
  obj.b("a =2")
  obj.b("c =3")
  printobj.a
  printobj.c
if __name__ == '__main__':
  main()

动态载入包:

def test(s,e):
  print s
  print e
class C():
  def __init__(self,name):
    print name
  def test(self):
    print 'class!!!'

加载器代码:

class Dynload():
  def __init__(self,package,imp_list):
    self.package=package
    self.imp=imp_list
  def getobject(self):
    return __import__(self.package,globals(),locals(),self.imp,-1)
  def getClassInstance(self,classstr,*args):
    return getattr(self.getobject(),classstr)(*args)  
  def execfunc(self,method,*args):
    return getattr(self.getobject(),method)(*args)
  def execMethod(self,instance,method,*args):
    return getattr(instance,method)(*args)
#Test:
dyn=Dynload('util.common',['*'])
ins=dyn.getClassInstance('C','gao')
dyn.execMethod(ins,'test')
dyn.execfunc('test','Hello','function!')

根据名字加载指定文件

def loadapp(self, app):
    filepath="mgr/"+app+".py"
    if os.path.exists(filepath):
      imp.load_source("TYACMgrHandler_"+app.upper(), filepath)
//修改了app.py,从新调用这个函数,新的代码自动生效

根据名字调用对应方法

return getattr(self, op)(args.get("port"), args) //op="start" args=dict
getattr(self, self.request.method.lower())(*args, **kwargs)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python遍历目录并批量更换文件名和目录名的方法
Sep 19 Python
Python时间获取及转换知识汇总
Jan 11 Python
初探TensorFLow从文件读取图片的四种方式
Feb 06 Python
Python向Excel中插入图片的简单实现方法
Apr 24 Python
python中csv文件的若干读写方法小结
Jul 04 Python
python的debug实用工具 pdb详解
Jul 12 Python
Python学习笔记之While循环用法分析
Aug 14 Python
手把手教你pycharm专业版安装破解教程(linux版)
Sep 26 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
python 读取串口数据的示例
Nov 09 Python
python pyhs2 的安装操作
Apr 07 Python
python绘制云雨图raincloud plot
Aug 05 Python
python实现按行切分文本文件的方法
Apr 18 #Python
Python获取linux主机ip的简单实现方法
Apr 18 #Python
Python实现递归遍历文件夹并删除文件
Apr 18 #Python
Python简单实现TCP包发送十六进制数据的方法
Apr 16 #Python
Python出现segfault错误解决方法
Apr 16 #Python
Python判断值是否在list或set中的性能对比分析
Apr 16 #Python
python中zip()方法应用实例分析
Apr 16 #Python
You might like
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
用PHP调用Oracle存储过程
2006/10/09 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
PHP安全上传图片的方法
2015/03/21 PHP
web页面数据展示新想法(json)
2010/06/08 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python实现115网盘自动下载的方法
2014/09/30 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
父亲八十大寿答谢词
2014/01/23 职场文书
高二物理教学反思
2014/02/08 职场文书
大学生求职信范文
2014/05/24 职场文书
经营理念口号
2014/06/21 职场文书
观看信仰心得体会
2014/09/04 职场文书
法人委托书范本格式
2014/09/15 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
2014年招生工作总结
2014/11/26 职场文书
2015年中秋节主持词
2015/07/30 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
AJAX学习笔记
2021/05/18 Javascript