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のコードの組織化や管理がより容易になります。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です