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的类变量和成员变量用法实例教程
Aug 25 Python
Python中处理字符串的相关的len()方法的使用简介
May 19 Python
Python 模板引擎的注入问题分析
Jan 01 Python
python回调函数中使用多线程的方法
Dec 25 Python
分享Python切分字符串的一个不错方法
Dec 14 Python
wxpython多线程防假死与线程间传递消息实例详解
Dec 13 Python
pytorch梯度剪裁方式
Feb 04 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
Python 合并拼接字符串的方法
Jul 28 Python
python利用线程实现多任务
Sep 18 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 Python
Python 实现PS滤镜的旋涡特效
Dec 03 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分页函数代码(简单实用型)
2010/12/02 PHP
php session安全问题分析
2011/06/24 PHP
PHP高级对象构建 工厂模式的使用
2012/02/05 PHP
部署PHP项目应该注意的几点事项分享
2013/12/20 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
2014/12/15 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
javascript兼容性(实例讲解)
2017/08/15 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
js实现小时钟效果
2020/03/25 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
使用Python制作微信跳一跳辅助
2018/01/31 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
Python如何发送与接收大型数组
2020/08/07 Python
国际领先的学术出版商:Springer
2017/01/11 全球购物
美国电视购物:QVC
2017/02/06 全球购物
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
财务会计专业毕业生自荐信
2013/10/02 职场文书
个人近期表现材料
2014/02/11 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
公司考勤管理制度
2015/08/04 职场文书
中秋节主题班会
2015/08/14 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
Python集合set()使用的方法详解
2022/03/18 Python