Python の パッケージについての説明
複数のモジュールをまとめてパッケージとして扱うことができます。
パッケージはフォルダで管理し、通常 __init__.py という名前の特殊なファイルを配置します。__init__.py には初期化処理を記述します。なければ 空でも問題ありません。
フォルダに 格納するモジュールは .py ファイルです。
フォルダの追加
ソリューションエクスプローラ の プロジェクトを右クリックして 表示されるメニューから「追加」→「新しいフォルダ」をクリックします。
作成した フォルダ内に パッケージ化する モジュールを配置します。
上図では 「mymod1.py」と「mymod2.py」と設定ファイルとして 空の「__init__.py」ファイルを格納しています。
それぞれのモジュールの内容は 次のようです。
# mymod1.py
def printAAA():
print("Hello AAA")
def printBBB():
print("Hello BBB")
# mymod2.py
def printCCC():
print("Hello CCC")
# __init__.py
import 文
from パッケージ名 import モジュール名
で モジュール内の関数などを使えます。
from mypkg import mymod1
from mypkg import mymod2
mymod1.printAAA()
mymod1.printBBB()
mymod2.printCCC()
モジュール内の関数などを直接インポートすることもできます。
from パッケージ名.モジュール名 import 識別子
識別子 は 関数名 を指定します。(変数名、クラス名でもOK)
from mypkg.mymod1 import printAAA
from mypkg.mymod1 import printBBB
from mypkg.mymod2 import printCCC
printAAA()
printBBB()
printCCC()
__init__.py
「__init__.py」に インポートの処理を書くと パッケージの利用が とても便利になります。
# __init__.py
from mypkg.mymod1 import printAAA
from mypkg.mymod1 import printBBB
from mypkg.mymod2 import printCCC
利用するには 次のように 記述します。
import mypkg
mypkg.printAAA()
mypkg.printBBB()
mypkg.printCCC()
「__init__.py」で「__all__」を使うと * で import できるようになります。
# __init__.py
__all__ = ["mymod1", "mymod2"]
利用するには 次のように 記述します。
from mypkg import *
mymod1.printAAA()
mymod1.printBBB()
mymod2.printCCC()
コメント