Pythonでは、ディレクトリ構造がそのままパッケージの階層になります。また、ディレクトリ直下の __init__.py
はその階層に属するパッケージが最初に import
された際に呼び出されます。
Pythonのモジュールは単一のpythonファイル (.py)で、パッケージはモジュールが複数含まれているフォルダ、という理解でいいかと思います。
以下に、Pythonのモジュールとパッケージの階層構造についての基本的な例を示します。
# フォルダ構成
.
├── lib
│ └── lib_a.py
└── main.py
# lib_a.py
class Student:
def __init__(self, name: str, age: int):
self.__name: str = name
self.__age: int = age
@property
def name(self) -> str:
return self.__name
@property
def age(self) -> int:
return self.__age
@name.setter
def name(self, name: str) -> None:
self.__name = name
@age.setter
def age(self, age: int) -> None:
self.__age = age
def add(x: float, y: float) -> float:
return x + y
# main.py
from lib.lib_a import Student, add
taro = Student('taro', 25)
print(taro.age)
print(add(3, 8))
この例では、lib
パッケージ内の lib_a
モジュールをインポートしています。
Pythonのインポート方法に関しては2種類存在します。from ... import ...
方式と import ...
方式です。上記は from ... import ...
方式ですが、下記のように import
方式でも問題なくインポート可能です。ただし、インポートしたクラスや関数を使うためには、クラス名の前にパッケージ名などを明記する必要があります。
# main.py
import lib.lib_a
# クラスを使うためには、パッケージ名、モジュール名を付ける必要がある
taro = lib.lib_a.Student('taro', 25)
print(taro.age)
print(lib.lib_a.add(3, 8))
以上がPythonのモジュールとパッケージの階層構造についての基本的な説明です。この知識を持つことで、Pythonのコードの組織化や管理がより容易になります。