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+Django在windows下的开发环境配置图解
Nov 11 Python
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 Python
使用tensorflow实现AlexNet
Nov 20 Python
python数字图像处理之骨架提取与分水岭算法
Apr 27 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
Python3.6.0+opencv3.3.0人脸检测示例
May 25 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 Python
python 处理微信对账单数据的实例代码
Jul 19 Python
python 实现字符串下标的输出功能
Feb 13 Python
python 监控服务器是否有人远程登录(详细思路+代码)
Dec 18 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
Jan 29 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 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
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
网页里控制图片大小的相关代码
2006/06/25 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
再谈javascript面向对象编程
2012/03/18 Javascript
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
浅谈关于iview表单验证的问题
2018/09/29 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
对python中return和print的一些理解
2017/08/18 Python
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
python实现随机漫步算法
2018/08/27 Python
python实现简单日期工具类
2019/04/24 Python
Python自省及反射原理实例详解
2020/07/06 Python
python之语音识别speech模块
2020/09/09 Python
使用python-cv2实现视频的分解与合成的示例代码
2020/10/26 Python
CSS3点击按钮实现背景渐变动画效果
2016/10/19 HTML / CSS
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
求职信范文英文版
2014/01/05 职场文书
企业消防安全制度
2014/02/02 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
成绩单公证书
2014/04/10 职场文书
代领毕业证委托书
2014/08/02 职场文书
社区创先争优承诺书
2014/08/30 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS
JS class语法糖的深入剖析
2022/07/07 Javascript