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写一个windows下的定时关机脚本(推荐)
Mar 21 Python
Python利用ElementTree模块处理XML的方法详解
Aug 31 Python
简单了解什么是神经网络
Dec 23 Python
Python切片操作实例分析
Mar 16 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
Feb 12 Python
django admin组件使用方法详解
Jul 19 Python
线程安全及Python中的GIL原理分析
Oct 29 Python
pytorch加载自定义网络权重的实现
Jan 07 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 Python
Python3中FuzzyWuzzy库实例用法
Nov 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
php 结果集的分页实现代码
2009/03/10 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
php顺序查找和二分查找示例
2014/03/27 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
JS实现Enter键跳转及控件获得焦点
2013/08/12 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
jQuery实现手机上输入后隐藏键盘功能
2017/01/04 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
学习Vue组件实例
2018/04/28 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
Seajs源码详解分析
2019/04/02 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
详解分布式任务队列Celery使用说明
2018/11/29 Python
python制作抖音代码舞
2019/04/07 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
技术副厂长岗位职责
2013/12/26 职场文书
汉语言文学职业规划
2014/02/14 职场文书
中医学专业自荐信范文
2014/04/01 职场文书
《锄禾》教学反思
2014/04/08 职场文书
分公司任命书
2014/06/06 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript