別ファイルで定義されているクラスで定義されている関数を使用する方法

はじめに

先週、PythonETLを作成していて、違うファイルで定義した関数を使用したいときに少し戸惑った。

クラスの中にその関数を定義して、そのクラスをimportして、インスタンス生成して、そのインスタンスから呼び出せばいいと思うので、サンプルを作成していく。

フォルダ構成

以下のようなフォルダ構成。

main.py

utils/helperモジュールから、DataTransformerクラスを読み込んでいる。メイン関数では、sample_dataというリストを定義して、DataTransformerクラスのインスタンスを生成して、変数transformerに代入している(引数はFruitTransformer)。transformerインスタンスからtransform関数を呼び出している(引数はsample_data)。最後に、変換前のデータとして「sample_data」を、変換後のデータとして「trandformed」をコンソールに出力している。

# main.py

from utils.helper import DataTransformer

def main():
    sample_data = ["apple", "banana", "cherry"]

    transformer = DataTransformer("FruitTransformer")
    transformed = transformer.transform(sample_data)

    print(f"変換前: {sample_data}")
    print(f"変換後: {transformed}")

if __name__ == "__main__":
    main()

utils/helper.py

DataTransformerクラスが定義されている。このクラスの中では、初期化とtransform関数の定義が行われている。初期化では、self.nameにnameを代入している。transform関数では、引数dataを受け取り、dataをリスト内包表記で大文字に変換(upper関数使用)して、文字列型に変換したリストを返す。

# utils/helper.py

class DataTransformer:
    def __init__(self, name):
        self.name = name

    def transform(self, data):
        # ここに何らかの変換処理を書く
        return [str(item).upper() for item in data]

出力結果

(venv) Mac:python shibatahiroshitaka$  cd /Users/shibatahiroshitaka/Downloads/python ; /usr/bin/env /Users/shibatahiroshitaka/Downloads/python/venv/bin/python /Users/shibatahiroshitaka/.vscode/extensions/ms-python.debugpy-2025.4.1-darwin-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher 50014 -- /Users/shibatahiroshitaka/Downloads/python/other_module_function/main.py 
変換前: ['apple', 'banana', 'cherry']
変換後: ['APPLE', 'BANANA', 'CHERRY']

処理の流れ

まずはmain.pyのmain関数が呼ばれる。sample_dataリストの定義、transformerインスタンスの生成が行われる。

utils/helper.pyでDataTransformerクラスの初期化が行われる。引数のFruitTransfomerがself.nameに代入される。

main.pyでsample_dataを引数に渡したtransform関数が呼び出される。utils/helper.pyで処理が行われる。大文字に変換されたリストが戻り値として返ってくる。それがmain.pyのtransfomedに代入される。

main.pyの11~12行目で、変換前と変換後のリストをコンソールに表示させている。

main関数呼び出し

sample_dataリストの定義

transformerインスタンスの生成

DataTransformerの初期化

デバッグ コンソール

transform関数の呼び出し

transform関数の処理

transformed変数にtransform関数の処理結果が入る

変換前と変換後のリストを出力

コメントを残す

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