Pythonの別ファイルのclass(クラス)の使い方
目次
- Pythonの別ファイルのclass(クラス)の使い方
- 別ファイルにクラスを作ってみる
- 別ファイルのクラスをインポートする
- fromを使ってインポートする
- アスタリスクですべてをインポート
- asでクラスに別名を付ける
- おわりに
Pythonの別ファイルのclass(クラス)の使い方
Pythonではクラス(class)を使えますが、別ファイルにあるクラスはどのように使うのでしょうか?
今回はこれを具体的に解説します。
(^ _ ^) | 別ファイルのクラスを使おう |
結論から言うと、別ファイルにあるクラスの使い方は「import文」の使い方に深く関わってきます。
つまりimport文について理解を深めると別ファイルのクラスも扱えるようになります。
関連記事
別ファイルにクラスを作ってみる
では今回は例として「other.py」というファイルを作ります。
そしてこの中に↓のようなクラスを作っておきます。
class Animal: def __init__(self, name): self.name = name def get_name(self): return self.name
Animalクラスの構成は__init__()
メソッドとget_name()
メソッドからになります。
__init__()
では引数のname
をself.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.py
にother.py
を輸入する文です。
輸入というのはつまりメモリ上にother.py
を展開するということです。
import文の使い方は↓のとおりです。
import 輸入したいモジュール名
先ほどの例で言うとmain.py
にother.py
をインポートしたい場合は↓のようになります。
import other
このようにすると、main.py
内でother
という変数が使えるようになります。
そしてother.Animal
とクラス名をつなげると、Animal
クラスにアクセスできます。
これはつまりother
内にあるAnimal
クラスを、other
にドットを付けてアクセスする、ということです。
other
はファイルでありモジュールですので、ファイル内の変数やクラス、関数などにこのようにアクセスできます。
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
です。
ですのでHuman
はAnimal
を使ってるのと同じです。
これは言語的には変数名(識別子)を変えてるだけです。
ちなみにファイルの名前を変えることもできます。
import other as another
↑の場合はother
を別名のanother
にしてます。
こうするとanother.Animal
のようにクラスにアクセスできます。
おわりに
今回はPythonの別ファイルのクラス(class)の使い方を解説しました。
クラスをインポートできるようになっておけばPythonのプログラミングも捗りますね。
(^ _ ^) | クラスをインポート |
(・ v ・) | 貿易じゃ |