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完全新手教程
Feb 08 Python
一个简单的python程序实例(通讯录)
Nov 29 Python
Python中的两个内置模块介绍
Apr 05 Python
Python输出汉字字库及将文字转换为图片的方法
Jun 04 Python
Python模块包中__init__.py文件功能分析
Jun 14 Python
python使用SMTP发送qq或sina邮件
Oct 21 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
Python实现动态添加属性和方法操作示例
Jul 25 Python
Python关于excel和shp的使用在matplotlib
Jan 03 Python
在python中实现强制关闭线程的示例
Jan 22 Python
pytorch 获取tensor维度信息示例
Jan 03 Python
selenium+超级鹰实现模拟登录12306
Jan 24 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 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
2017/09/20 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
JS实现显示当前日期的实例代码
2018/07/03 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python编程实现正则删除命令功能
2017/08/30 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
HTML5之语义标签介绍
2016/07/07 HTML / CSS
台湾家适得:Homeget
2019/02/11 全球购物
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
司考复习计划
2015/01/19 职场文书
闪闪的红星观后感
2015/06/08 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
Python中time标准库的使用教程
2022/04/13 Python
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers