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入门篇之字典
Oct 17 Python
Python中编写ORM框架的入门指引
Apr 29 Python
用tensorflow搭建CNN的方法
Mar 05 Python
Python发送http请求解析返回json的实例
Mar 26 Python
解决Python安装后pip不能用的问题
Jun 12 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
Python多叉树的构造及取出节点数据(treelib)的方法
Aug 09 Python
python实现输入三角形边长自动作图求面积案例
Apr 12 Python
pandas 像SQL一样使用WHERE IN查询条件说明
Jun 05 Python
python实现批处理文件
Jul 28 Python
Python+Appium新手教程
Apr 17 Python
关于Python使用turtle库画任意图的问题
Apr 01 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
生成sessionid和随机密码的例子
2006/10/09 PHP
PHP中对数据库操作的封装
2006/10/09 PHP
php输入流php://input使用浅析
2014/09/02 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
Js基础学习资料
2010/11/23 Javascript
使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
2014/09/01 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
对vue中methods互相调用的方法详解
2018/08/30 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
js/jQuery实现全选效果
2019/06/17 jQuery
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
vue实现日历表格(element-ui)
2020/09/24 Javascript
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
Python实现全排列的打印
2018/08/18 Python
Python pymongo模块常用操作分析
2018/09/01 Python
python中map的基本用法示例
2018/09/10 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
广告学专业应届生求职信
2013/10/01 职场文书
公司活动策划方案
2014/01/13 职场文书
小学体育教学反思
2014/01/31 职场文书
教师产假请假条
2014/04/10 职场文书
医学专业大学生求职信
2014/07/12 职场文书
庆祝教师节演讲稿
2014/09/03 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
会议欢迎词范文
2015/01/27 职场文书
消防安全月活动总结
2015/05/08 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书