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单链表的简单实现方法
Sep 23 Python
python实现逆序输出一个数字的示例讲解
Jun 25 Python
python调用外部程序的实操步骤
Mar 04 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
Jul 19 Python
在linux系统下安装python librtmp包的实现方法
Jul 22 Python
Python+AutoIt实现界面工具开发过程详解
Aug 07 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
Sep 24 Python
浅析使用Python搭建http服务器
Oct 27 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
如何用python免费看美剧
Aug 11 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
python实现监听键盘
Apr 26 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中使用Imagick操作PSD文件实例
2015/01/26 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
2020/04/06 PHP
javascript for循环设法提高性能
2010/02/24 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
Angular8基础应用之表单及其验证
2019/08/11 Javascript
js实现转动骰子模型
2019/10/24 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
安装PyInstaller失败问题解决
2019/12/14 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
致400米运动员广播稿
2014/02/07 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
计算机求职信
2014/07/02 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
热情服务标语
2014/10/07 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers