天天看點

python中package機制的兩種實作方式

當執行import module時,解釋器會根據下面的搜尋路徑,搜尋module1.py檔案。

1) 目前工作目錄

2) PYTHONPATH中的目錄

3) Python安裝目錄 (/usr/local/lib/python)

事實上,子產品搜尋是在儲存在sys.path這個全局變量中的目錄清單中進行搜尋。

sys.path會在解釋器開始執行時被初始化成包含:

1)目前工作目錄

package是子產品的集合,每一個Package的根目錄下面都應當有一個__init__.py 檔案。當解釋器發現目錄下有這個檔案時,他就會認為這是一個Package,而不是一個普通的目錄。

我們通過下面這樣的一個執行個體來說明

假定項目結構如下:

demo.py

MyPackage

---classOne.py

---classTwo.py

---__init__.py

       現在我們通過兩種方式來實作包機制,主要差別就在于是否在__init__.py中寫入子產品導入語句。

1,__init__.py是一個空白檔案的方式,

 demo.py内容如下:

 複制代碼

from MyPackage.classOne import classOne

from MyPackage.classTwo import classTwo

if __name__ == "__main__":

    c1 = classOne()

    c1.printInfo()

    c2 = classTwo()

    c2.printInfo()

複制代碼

classOne.py内容如下:

class classOne:

    def __init__(self):

        self.name = "class one"

    def printInfo(self):

        print("i am class One!")

 classTwo.py内容如下:

class classTwo:

        self.name = "class two"

        print("i am class two!")

 2,如果在__init__.py中寫入導入子產品的語句,則上述例子可以這樣來做。

其中__init__.py中内容如下:

from classOne import classOne

from classTwo import classTwo

demo.py内容如下:

import MyPackage

    c1 = MyPackage.classOne()

    c2 = MyPackage.classTwo()

或者demo.py也可以定義如下:

from MyPackage import *

本文轉自Phinecos(洞庭散人)部落格園部落格,原文連結:http://www.cnblogs.com/phinecos/archive/2010/05/07/1730027.html,如需轉載請自行聯系原作者