python動(dòng)態(tài)加載包的方法小結(jié)
本文實(shí)例總結(jié)了python動(dòng)態(tài)加載包的方法。分享給大家供大家參考,具體如下:
動(dòng)態(tài)加載模塊有三種方法
1. 使用系統(tǒng)函數(shù)__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')
動(dòng)態(tài)增加屬性
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()
動(dòng)態(tài)載入包:
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!')
根據(jù)名字加載指定文件
def loadapp(self, app):
filepath="mgr/"+app+".py"
if os.path.exists(filepath):
imp.load_source("TYACMgrHandler_"+app.upper(), filepath)
//修改了app.py,從新調(diào)用這個(gè)函數(shù),新的代碼自動(dòng)生效
根據(jù)名字調(diào)用對(duì)應(yīng)方法
return getattr(self, op)(args.get("port"), args) //op="start" args=dict
getattr(self, self.request.method.lower())(*args, **kwargs)
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
OpenCV學(xué)習(xí)之圖像的分割與修復(fù)詳解
圖像分割本質(zhì)就是將前景目標(biāo)從背景中分離出來。在當(dāng)前的實(shí)際項(xiàng)目中,應(yīng)用傳統(tǒng)分割的并不多,大多是采用深度學(xué)習(xí)的方法以達(dá)到更好的效果。本文將詳細(xì)介紹一下OpenCV中的圖像分割與修復(fù),需要的可以參考一下2022-01-01
Django利用elasticsearch(搜索引擎)實(shí)現(xiàn)搜索功能
這篇文章主要介紹了Django利用elasticsearch(搜索引擎)實(shí)現(xiàn)搜索功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
python控制臺(tái)實(shí)現(xiàn)tab補(bǔ)全和清屏的例子
今天小編就為大家分享一篇python控制臺(tái)實(shí)現(xiàn)tab補(bǔ)全和清屏的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08
舉例講解Django中數(shù)據(jù)模型訪問外鍵值的方法
這篇文章主要介紹了舉例講解Django中數(shù)據(jù)模型訪問外鍵值的方法,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下2015-07-07
tensorflow 2.1.0 安裝與實(shí)戰(zhàn)教程(CASIA FACE v5)
這篇文章主要介紹了tensorflow 2.1.0 安裝與實(shí)戰(zhàn)(CASIA FACE v5),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
淺析python中numpy包中的argsort函數(shù)的使用
這篇文章主要介紹了python中numpy包中的argsort函數(shù)的使用,argsort()函數(shù)在模塊numpy.core.fromnumeric中,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2018-08-08
Python中使用kitti數(shù)據(jù)集實(shí)現(xiàn)自動(dòng)駕駛(繪制出所有物體的行駛軌跡)
這篇文章主要介紹了Python中使用kitti數(shù)據(jù)集實(shí)現(xiàn)自動(dòng)駕駛——繪制出所有物體的行駛軌跡,本次內(nèi)容主要是畫出kitti車的行駛的軌跡,需要的朋友可以參考下2022-06-06

