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爬虫抓取暴走漫画上gif图片的实例分享
Apr 20 Python
Python使用sftp实现上传和下载功能(实例代码)
Mar 14 Python
Python基础之getpass模块详细介绍
Aug 10 Python
tensorflow识别自己手写数字
Mar 14 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
Python中将变量按行写入txt文本中的方法
Apr 03 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
Jul 07 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
Aug 06 Python
python对象销毁实例(垃圾回收)
Jan 16 Python
Jupyter加载文件的实现方法
Apr 14 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
May 21 Python
python实现会员信息管理系统(List)
Mar 18 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
php将数组存储为文本文件方法汇总
2015/10/28 PHP
php取出数组单个值的方法
2018/03/12 PHP
js 图片缩放(按比例)控制代码
2009/05/27 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
简述vue状态管理模式之vuex
2018/08/29 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
基于Vue组件化的日期联动选择器功能的实现代码
2018/11/30 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
Python中使用HTMLParser解析html实例
2015/02/08 Python
Python遍历目录中的所有文件的方法
2016/07/08 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
python3 深浅copy对比详解
2019/08/12 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
Python线程threading模块用法详解
2020/02/26 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
毕业横幅标语
2014/10/08 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
七年级语文教学反思
2016/03/03 职场文书