はじめに
Pythonのimport文についてよくわからないで実装していた部分があったのでこのタイミングでまとめてみようと思います。
この記事では「import」、「from」、「as」の使い方と外部ファイルの読み込み方(呼び出し方)について説明していきたいと思います。
対象レベル
Pythonの環境設定が整っており、Pythonの基本構文が理解出来ること。
詳しくは「【Python入門】〜初級編〜環境構築・基本構文まとめ」にまとめてあります。興味のある方はご覧ください。
サンプルソースを読むうえで理解しておきたいこと
基本的にこの章の内容は読み飛ばしてOKです。サンプルソースでわからないところがあれば参照してみてください。
クラスの定義方法について
工事中
「import as」について
この記事でも少し取り上げていますがなぜ使ったほうが良いかなどを記載してあります。
import文の使い方(import・from・as)
まずは基本的な使い方から、「import」の後ろにモジュール名を指定すると対象のモジュールが使えるようになります。
import モジュール名
その次に「as」を使いかたです。
モジュール名が長い場合、プログラム内で何回も記述するのは大変なので「as」を使って別名を定義します。
例えば、「abc_def_ghi」というモジュールがあったとして、すべて記述するのはめんどくさいので「import abc_def_ghi as ab」と定義します。
すると、「ab」で「 abc_def_ghi 」の関数を呼び出すことが出来るといった感じです。
import モジュール名 as 別名
最後にfromです。「from」の設定内容については後程説明しますが同じ階層の「cat.py」を読み込みたいなら
「from cat ~」となりますし、「subフォルダ」配下の「dog.py」を読み込みたければ「from sub.dog」となります。
from ファイル名(拡張子は含めない) import モジュール名 またはクラス名 as 別名
サンプル➀ 同じ階層とひとつ下の階層のモジュールを読み込む
それでは、サンプルソースを使いながら説明していきたいと思います。
フォルダ構成について
フォルダ構成は以下のようにします。「main_1.py」を実行すると処理中に同じ階層にある「cat.py」と「subフォルダ」配下に配置した「dog.py」が呼び出されます。
main_1/ ├main_1.py ├cat.py └sub/ └dog.py
サンプルソース➀
「main_1.py」と同じ階層にある「cat.py」は、「cryメソッド」を呼び出すと「にゃー」と出力されます。
こちらも基本的には同じで、クラス名と鳴き声以外に配置場所が異なります。
以下のサンプルがこの記事の本題の「import文」の呼び出し例です。
2行目では「cat.py」の「Catクラス」を呼び出しています。
3行目では「dog.py」の「Dogクラス」を呼び出しています。「from」の設定方法は実行プログラムからみて、「subフォルダ」の下の「dog.py」を呼び出しているので「sub.dog」と設定します。
フォルダ階層は 「.」ピリオドを使って表現します。
5行目でCatクラスのインスタンスを生成して、6行目で「Cryメソッド」を呼び出しています。
以下同様に、8行目でインスタンス生成し、「Cryメソッド」を呼び出しています。
サンプルの実行
実行結果は以下になります。想定通り外部ファイルのプログラムが呼び出されて鳴き声が表示されていますね。
スポンサーリンク

サンプル② ひとつ下の階層のクラスを別々で読み込んでみる
フォルダ構成について
main_2/ ├main_2.py └sub/ └animals.py
サンプルソース②
こちらのソースは先ほどの「Catクラス」と「Dogクラス」を集約して、「animals」モジュー名を作りました。フォルダ構成は上記のとおり、「subフォルダ」の下に存在します。
それでは、外部ファイルのクラスの呼び出し方法について説明していきます。
2行目では「 sub.animals 」モジュールの「Catクラス 」 を呼び出しています。わざわざ「as」を使う必要のない長さですが別名で「Ca」と定義しています。
5行目でインスタンス生成を行い、6行目で「Catクラス」の「cryメソッド」を呼び出しています。
「Dogクラス」でも同様の手順で「cryメソッド」を呼び出します(3行目、8行目、9行目)
サンプルの実行
こちらも実行してみると正しく動作していることが確認できます。

まとめ
importでモジュー名を指定する、使い方は「import モジュール名」
「import as」で別名を定義できる。使い方は「import モジュール名 as 別名」
「from」を使うと別モジュールのプログラムを呼び出すことが出来る。階層は「.」ピリオドで表現する。