国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python動態加載包的方法小結

2020-01-04 17:32:06
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了python動態加載包的方法,結合實例形式總結分析了Python動態加載模塊,動態增加屬性及動態加載包的相關實現技巧,需要的朋友可以參考下
 

本文實例總結了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):  passdef 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.cif __name__ == '__main__':  main()

動態載入包:

def test(s,e):  print s  print eclass 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=dictgetattr(self, self.request.method.lower())(*args, **kwargs)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 筠连县| 民县| 濮阳县| 南靖县| 略阳县| 东台市| 仲巴县| 巴青县| 莱芜市| 和平县| 双桥区| 巴马| 新建县| 盐边县| 盖州市| 霞浦县| 曲水县| 平凉市| 玛曲县| 姚安县| 方山县| 察隅县| 阜阳市| 邢台市| 若尔盖县| 开封市| 阿坝| 天台县| 扶沟县| 横山县| 侯马市| 平阳县| 腾冲县| 桐柏县| 渝中区| 花莲市| 苍溪县| 陵川县| 临沂市| 珠海市| 土默特右旗|