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

457, 2022-04-20

目次

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

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

(^ _ ^)

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

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

関連記事
Pythonのリストにデータを追加(append)する方法【extend, insert, スライス】
Pythonでbytes型をstr型に(byte to string)変換する
Pythonのリストのappend()の使い方【初心者向け完全解説】

わかりやすいPythonのclassの使い方

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

では今回は例として「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のプログラミングも捗りますね。

(^ _ ^)

クラスをインポート

(・ v ・)

貿易じゃ

この記事のアンケートを送信する