日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python机制_python 加载模块机制

發布時間:2023/12/19 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python机制_python 加载模块机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1,使用系統函數import()

stringmodule = _import('string')

2,使用imp 模塊

import imp

stringmodule = imp.loadmodule('string',*imp.findmodule('string'))

3,使用exec

importstring = "import string as stringmodule"

exec importstring

import importlib

importlib是import的python實現

1、獲取模塊對象

m1 = importlib.importmodule("sites.sitespybuild")

print(m1)

輸出:

2、獲取類對象

aclass = getattr(m1, "sites_pybuild")

print(aclass)

輸出:

3、實例化對象

p = aclass("test")

相當于直接使用p = sites.sitespybuild.sitespybuild("test")

下面的文章也可以實現反射,主要思想是先導入module,然后使用globals()["classname"]獲得類定義,再使用此類定義來初始化對象。

http://blog.csdn.net/lokibalder/article/details/3459722

python

是一個腳本語言,它不象java一樣有一個專門的包來處理反射。以

下是我們來看看python是怎么做到類似java一樣的反射功能的。我在網上搜了一下,因為在網上沒有很明確的文章說要怎么做,所以,我寫了這篇,希望

新手不要向我一樣走彎路,因為是新手,所以,我在這里沒能考慮到異常的處理。

-、動態加載類

說到動態的加載類,那就不得不說,動態的加態模塊。因為只能成功的加模了模塊才能加載到類。我們可以用,以下的代碼來動態的加載類

Python代碼

#modulePath是模塊文件的路徑+模塊的文件名。

aMod = sys.modules[modulePath]

當我們動態的加載了這個模塊后,我們就可以從這個模塊中取得你要的類了,感覺上這個方法有點像java中從類中反射出方法。下以的代碼可以

Python代碼

aClass= getattr(aMod, className)

二、動態實例化類

得到了class對象之后,在python就可以很方便的得到他的對像,以下這代碼

Python代碼 obj = new.instance(aClass)

三、得到對象、類或模塊中的所有屬性方法

在java的反射中我們可以得到對象中的所有屬性和方法,在python中,因為是腳本語言,所以我們要得到這個些屬性方法更加的方便,我們可以用以下的代碼獲得類,對象,模塊中的所有的屬性的名稱

Python代碼

dir(aClass)

我們得到這些屬性的名稱后,可以用上面得到class 的方法來獲得這個對象里的所有屬性

四、動態運行方法

動態的運行方法,我們也非常的方便,因為python是腳本語言,感覺起來很象javascript的方式來調用方法。

Python代碼

apply(objFunc,arrArgs)

代碼中objFunc是用getAttr從實例化后的對象中取得到function,而arrArgs是我們的參數,和javascript一樣,他是數組一樣的對象。

有了這些方法,我們就可以做和java反射一樣做的事了,我在網上找到了一個模塊,小改了一下,使得用這個模塊可以很方便的用類名實例化一個實例和運行這個實例中的方法,如果大家需要可以down下來看看

總結

以上是生活随笔為你收集整理的python机制_python 加载模块机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。