動態載入模組有三種方法
1,使用系統函式__import_()
stringmodule = __import__('string')
2,使用imp 模組
import imp
stringmodule = imp.load_module('string',*imp.find_module('string'))
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',(),)
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()
動態載入包
deftest(s ,e
):print s
eclass
c():
def__init__(
self
,name
name
deftest(
self
'class!!!'
載入器**:
class
dynload
():def
__init__(
self
,package
,imp_list
):self
.package
=package
self
.imp
=imp_list
defgetobject(
self
):return
__import__(
self
.package
,globals
(),locals
(),self
.imp,-
1)def
getclassinstance(
self
,classstr,*
args
):return
getattr(
self
.getobject
(),classstr)(
*args)
defexecfunc(
self
,method,*
args
):return
getattr(
self
.getobject
(),method)(
*args)
defexecmethod(
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!')
根據名字載入指定檔案
根據名字呼叫對應方法
return getattr(self, op)(args.get("port"), args) //op="start"args=dict
getattr(self, self.request.method.lower())(*args, **kwargs)
python動態載入包
分類 python 2011 09 14 22 18 1684人閱讀收藏 舉報python import string list class module 動態載入模組有三種方法 1,使用系統函式 import stringmodule import string 2,使用imp 模組 import...
python動態載入包的方法小結
動態載入模組有三種方法 1.使用系統函式 import stringmodule import 程式設計客棧string 2.使用imp 模組 import imp stringmodule imp.load module string imp.find module string imp.load...
python非同步載入和動態 Vue動態載入非同步元件
背景 目前我們專案都是按元件劃分的,然後各個元件之間封裝成產品。目前都是採用iframe直接巢狀頁面。專案中我們還是會碰到一些通用的元件跟業務之間有通訊,這種情況下iframe並不是最好的選擇,iframe存在跨域的問題,當然是postmessage還是可以通訊的,但也並非是最好的。目前有這麼乙個場...