Pythonのパッケージとは?__init__.pyによる構造と使い方を徹底解説
Pythonにおけるパッケージとは、モジュールやサブパッケージ、さらにその配下のサブサブパッケージなどで構成される、単一のPythonアプリケーション環境を定義するための階層的なファイルディレクトリ構造のことです。パッケージを活用することで、大規模なプログラムを整理された形で管理できるようになります。
パッケージの基本的な構成例
ここでは、Phoneディレクトリ内に配置されたPots.pyファイルを例に考えてみましょう。このファイルには、以下のようなソースコードが含まれています。
#!/usr/bin/python
def Pots():
print "I'm Pots Phone"同じ要領で、それぞれ異なる関数を持つ2つのファイルも用意します。
- Phone/Isdn.py:
Isdn()関数を含むファイル - Phone/G3.py:
G3()関数を含むファイル
__init__.pyの役割と作成方法
次に、Phoneディレクトリ内にもう1つ__init__.pyというファイルを作成します。
- Phone/__init__.py
Phoneパッケージをインポートしたときにすべての関数を利用できるようにするには、__init__.py内に明示的なimport文を記述する必要があります。
from Pots import Pots from Isdn import Isdn from G3 import G3
これらの行を__init__.pyに追加することで、Phoneパッケージをインポートした時点で、すべての関数やクラスが利用可能になります。
パッケージのインポートと実行結果
作成したパッケージは、以下のようにしてインポートして使用します。
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots() Phone.Isdn() Phone.G3()
上記のコードを実行すると、次のような結果が出力されます。
I'm Pots Phone I'm 3G Phone I'm ISDN Phone
パッケージ設計のポイント
上記の例では、各ファイルに1つの関数だけを定義しましたが、実際には1つのファイルに複数の関数をまとめて定義することもできます。さらに、これらのファイルの中で異なるPythonクラスを定義し、そのクラス群をもとにパッケージを構築することも可能です。
なお、本記事のコード例はPython 2系の記述スタイル(print文)を使用しています。Python 3以降ではprint("文字列")のように関数形式で記述する必要があるため、実行環境に合わせて適宜書き換えてください。
-
Pythonで作るWebサイトブロッカー ― 業務時間中にSNSへのアクセスを自動遮断する方法
大手IT企業で働いたことがある方なら、FacebookやYouTube、InstagramといったSNS系のWebサイトが社内からアクセスできないよう制限されていることに気づいた経験があるかもしれません。こうした制限は、サードパーティ製アプリに頼らなくても実現できます。自分専用のオリジナルツールを作れば、好きなWebサイトを自由にブロックできるのです。しかもPythonでWebサイトブロッカーを開発するのは、それほど難しいことではありません。この記事では、指定したWebサイトをブロックするPythonスクリプトの作り方を解説します。前提条件Python 3.x がインストールされていることPy
-
Pythonで作る誕生日リマインダーアプリケーションの完全ガイド
この記事では、Pythonを使って誕生日リマインダーアプリケーションを作成する方法を解説します。当日の誕生日を自動的にチェックし、デスクトップ通知で教えてくれる便利なツールを、初心者でも理解できるようにステップごとに説明していきます。 課題の定義 まず、このアプリケーションに求められる要件を整理しましょう。 Pythonで、当日が登録済みの人物の誕生日かどうかを判定できること 誕生日の人物がいれば、その人の名前とともにシステムへ通知を送信すること このアプリケーションでは、日付・月・氏名を保存した「ルックアップファイル(照合用データファイル)」が必要です。ファイルのイメージは以下の通りです