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编写的com组件发生R6034错误的原因与解决办法
Apr 01 Python
python实现复制整个目录的方法
May 12 Python
python中range()与xrange()用法分析
Sep 21 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
Python使用pickle模块实现序列化功能示例
Jul 13 Python
Python之inspect模块实现获取加载模块路径的方法
Oct 16 Python
python读取文件名并改名字的实例
Jan 07 Python
linux中如何使用python3获取ip地址
Jul 15 Python
Python配置文件处理的方法教程
Aug 29 Python
django xadmin 管理器常用显示设置方式
Mar 11 Python
简单了解Python变量作用域正确使用方法
Jun 12 Python
Python Numpy库的超详细教程
Apr 06 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的session cookie错误
2009/08/09 PHP
php实现分页工具类分享
2014/01/09 PHP
Yii学习总结之安装配置
2015/02/22 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
AngularJS中的模块详解
2015/01/29 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
React优化子组件render的使用
2019/05/12 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
用python找出那些被“标记”的照片
2017/04/20 Python
Django的信号机制详解
2017/05/05 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
Python修改列表值问题解决方案
2020/03/06 Python
Matplotlib使用Cursor实现UI定位的示例代码
2020/03/12 Python
Python字符串split及rsplit方法原理详解
2020/06/29 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
LINUX下线程,GDI类的解释
2016/12/14 面试题
求职简历中个人的自我评价
2013/12/25 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
个人承诺书怎么写
2014/05/24 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
2014年妇幼卫生工作总结
2014/12/09 职场文书
学校党员干部承诺书
2015/05/04 职场文书
红歌会主持词
2015/07/02 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技