ユーニックス総合研究所

  • home
  • archives
  • python-class-tsukaikata-betsufile

Pythonの別ファイルのclass(クラス)の使い方

  • 作成日: 2022-04-20
  • 更新日: 2023-12-26
  • カテゴリ: Python

Pythonの別ファイルのclass(クラス)の使い方

Pythonではクラス(class)を使えますが、別ファイルにあるクラスはどのように使うのでしょうか?
今回はこれを具体的に解説します。

🦝 < 別ファイルのクラスを使おう

結論から言うと、別ファイルにあるクラスの使い方は「import文」の使い方に深く関わってきます。
つまりimport文について理解を深めると別ファイルのクラスも扱えるようになります。

関連記事

頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】

頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】

別ファイルにクラスを作ってみる

では今回は例として「other.py」というファイルを作ります。
そしてこの中に↓のようなクラスを作っておきます。

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

    def get_name(self):  
        return self.name  

Animalクラスの構成は__init__()メソッドとget_name()メソッドからになります。
__init__()では引数のnameself.nameに保存しています。
そしてget_name()ではself.nameの値を返すようにしています。

これでother.pyは完成です。

$ ls  
other.py  

別ファイルのクラスをインポートする

ではもう1つファイルを作ります。
main.py」というファイルです。

このmain.pyからother.pyにあるAnimalクラスを使いたいとします。
その場合は例えば↓のようにコードをmain.pyに書きます。

import other  

tama = other.Animal('Tama')  
print(tama.get_name())  

このmain.pyを↓のように端末から実行します。
そうすると↓のような結果になります。

$ python main.py  
Tama  

先ほどのコードを具体的に見ていきます。
まず、他のファイル(モジュール)を使いたい場合は「import文」を使います。

import文はたとえばmain.pyother.pyを輸入する文です。
輸入というのはつまりメモリ上にother.pyを展開するということです。

import文の使い方は↓のとおりです。

import 輸入したいモジュール名  

先ほどの例で言うとmain.pyother.pyをインポートしたい場合は↓のようになります。

import other  

このようにすると、main.py内でotherという変数が使えるようになります。
そしてother.Animalとクラス名をつなげると、Animalクラスにアクセスできます。

これはつまりother内にあるAnimalクラスを、otherにドットを付けてアクセスする、ということです。
otherはファイルでありモジュールですので、ファイル内の変数やクラス、関数などにこのようにアクセスできます。

関連記事
Pythonのimport文のわかりやすい使い方

fromを使ってインポートする

import文の使い方はほかにもあります。
from」を使うと先ほどのインポートとはまた違ったクラスのインポートができます。

from other import Animal  

pochi = Animal('Pochi')  
print(pochi.get_name())  

↑のコードを実行すると↓の結果になります。

Pochi  

from other import Animal」というコードを日本語にしましょう。
これは「other.pyからAnimalをインポートする」という意味になります。

つまり「from other」で「other.pyから」という意味になります。
そして「import Animal」で「Animalをインポートする」という意味になります。

このようにfromを使うと、直接ファイルからクラスをインポートすることができます。

複数のクラスをインポートしたい場合は↓のように書けます。

from other import Animal, Machine  

あるいは↓のようにも書けます。

from other import (  
    Animal,  
    Machine,  
)  

アスタリスクですべてをインポート

import文の使い方はまだあります。
from other import *」と書くと、other.py内のクラスや変数、関数をすべてインポートできます。

from other import *  

taro = Animal('Taro')  
print(taro.get_name())  

↑のようにコードを書いて実行すると↓の結果になります。

Taro  

アスタリスク(*)をインポート文で使うと、ファイル内のすべてをインポートします。
しかしこの書き方をすると「何をインポートしたのか?」というのが視覚的にわかりづらくなります。
便利ですがデメリットもある書き方と言えます。

asでクラスに別名を付ける

import文では「as」キーワードも使えます。
as」を使うと、インポートするクラスに別名を付けることができます。
たとえば↓のようにです。

from other import Animal as Human  

bob = Human('Bob')  
print(bob.get_name())  # Bob  

↑の例ではAnimalというクラス名をHumanに変更してインポートしています。
このようにするとmain.py内ではAnimalクラスをHumanとして使うことができます。

名前は違っていますが、Humanの実体はAnimalです。
ですのでHumanAnimalを使ってるのと同じです。
これは言語的には変数名(識別子)を変えてるだけです。

ちなみにファイルの名前を変えることもできます。

import other as another  

↑の場合はotherを別名のanotherにしてます。
こうするとanother.Animalのようにクラスにアクセスできます。

おわりに

今回はPythonの別ファイルのクラス(class)の使い方を解説しました。
クラスをインポートできるようになっておけばPythonのプログラミングも捗りますね。

🦝 < クラスをインポート

🐭 < 貿易じゃ