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的chardet库获得文件编码并修改编码
Jan 22 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
Apr 20 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 Python
Python简单生成随机姓名的方法示例
Dec 27 Python
python实现猜数字小游戏
Mar 24 Python
在python下读取并展示raw格式的图片实例
Jan 24 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 Python
Python处理PDF与CDF实例
Feb 26 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 02 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
Python如何使用logging为Flask增加logid
Mar 30 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 has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
PHP常用代码大全(新手入门必备)
2010/06/29 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
php画图实例
2014/11/05 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)
2016/03/09 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
爬山算法简介和Python实现实例
2014/04/26 Python
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
python实现单向链表详解
2018/02/08 Python
图解Python变量与赋值
2018/04/03 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
Flask-Mail用法实例分析
2018/07/21 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
python中property和setter装饰器用法
2019/12/19 Python
基于django2.2连oracle11g解决版本冲突的问题
2020/07/02 Python
Python 利用OpenCV给照片换底色的示例代码
2020/08/03 Python
安德玛比利时官网:Under Armour比利时
2019/08/28 全球购物
幼儿园消防演练方案
2014/02/13 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
工作会议主持词
2014/03/17 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
Python基本数据类型之字符串str
2021/07/21 Python
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js