python動態載入包

2021-05-28 05:01:59 字數 2525 閱讀 7998

動態載入模組有三種方法

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

print

eclass

c():

def__init__(

self

,name

):print

name

deftest(

self

):print

'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還是可以通訊的,但也並非是最好的。目前有這麼乙個場...