今回はPythonのクラスについて解説しましょう。
クラスは初学者には理解が難しいものの一つです。
クラスを使わなくても、簡単なアプリなら開発することは可能です。
しかし実際の開発現場では、クラスを多く使う場合もあります。
大規模なアプリを開発する場合は、クラスを使った方がソースコードの可読性が上がるのです。
そこで本記事ではクラスの、最も基礎の部分だけ紹介します。
クラス変数やクラスメソッドの意味についても解説しましょう。
クラスが良くわからないという方は、本記事をぜひ参考にしてください。
Pythonのクラスとは?
Pythonのクラスは、学校などにあるクラスと同じような意味と捉えて大丈夫です。
クラスは、複数のメソッドや関数、引数を1つにまとめたものです。
同じような処理は1つのクラスにまとめた方が、後でソースコードが見やすくなります。
特にコード量が長くなる場合などは、クラスにまとめるメリットが大きいでしょう。
Pythonのクラスを理解するには、いくつか知っておくべき用語があります。
- クラス変数
- クラスメソッド
- インスタンス変数
- インスタンスメソッド
- コンストラクタ
クラス変数
クラス変数とは、クラス内で定義された変数のことです。
クラス変数は、クラス外からは変数名を書くだけではアクセスできません。
クラス変数にアクセスする場合、下記のようにクラス名を指定する必要があります。
{クラス名}.{変数名}
変数について基礎知識を得たい方は【入門編4】Pythonの変数、データ型にとついて学ぼうをお読み頂けると良いでしょう。
クラスメソッド
クラスメソッドとは、クラス内で定義されたメソッドのことです。
クラスメソッドもクラス変数同様に、クラス外からは変数名を書くだけではアクセスできず、下記のクラス名を指定する必要があります。
{クラス名}.{メソッド名}
また、クラスメソッドを定義する場合、冒頭に「@classmethod」と書く必要があります。
この記述があることで、プログラムに「これはクラスメソッドです」と認識させられます。
メソッドについて基礎知識を得たい方は【初級編8】pythonのメソッドと関数の違いを理解しようをお読み頂けると良いでしょう。
インスタンス変数
インスタンス変数とは、クラス内で定義され、かつインスタンス化することで使える変数のことです。
インスタンス化とは、簡単に言えば、クラスを元に実際のデータを作成することです。
インスタンス化する場合、下記のように記述します。
クラス名()
インスタンス変数は、インスタンスごとに別々の値が生成されることになります。
インスタンスメソッド
インスタンスメソッドとは、クラス内で定義され、かつインスタンス化することで使えるメソッドのことです
インスタンスメソッドもやはり、事前にインスタンス化しないと使うことができません。
コンストラクタ
コンストラクタとは、インスタンス化するときに実行される関数のことです。
インスタンス変数の初期化をする場合などに使います。
Pythonのクラスの使い方
Pythonのクラスの使い方を紹介します。
- クラス変数を使用する
- クラスメソッドを使用する
- インスタンス変数を使う
- インスタンスメソッドを使う
1つ1つのやり方を丁寧に解説していきましょう。
クラス変数を使用する
クラス変数の使用方法をまず解説します。
○コード例
class TestClass():
# クラス変数
number = 1
# クラス変数にアクセス
print(TestClass.number)
○実行結果
上記のコードでは、TestClassというクラスを作成しています。
その中にnumberというクラス変数を用意しました。
クラス変数にアクセスする場合、クラス名を指定する必要があります。
「TestClass.number」によってクラス変数を外部から使用しています。
クラスメソッドを使用する
クラスメソッドの利用方法を解説します。
○コード例
class TestClass():
# クラスメソッド
@classmethod
def test_method(self):
print("Hello World!")
# クラスメソッドにアクセス
TestClass.test_method()
○実行結果
TestClassクラス内に、test_methodというクラスメソッドを作成しています。
クラスメソッドを使う場合は冒頭に「@classmethod」を付けるのが必須です。
また、引数に「self」を指定する必要もあります。
selfとはインスタンス自身を示すもので、pythonの設計仕様で必要なものとなっています。
インスタンス変数を使う
続いてインスタンス変数を使う方法をみていきましょう。
○コード例
class TestClass():
# コンストラクタ
def __init__(self, data):
# インスタンス変数
self.value = data
# インスタンス化
result = TestClass("Hello World!")
print(result.value)
○実行結果
上記のコードではまずインスタンス化をしています。
インスタンス化すると、コンストラクタが自動で実行されます。
コンストラクタを書く場合は、「init」という関数名にします。
また、引数に「self」を指定する必要もあります。
インスタンス化するときに「Hello World!」という引数を指定しています。
このデータがコンストラクタの「data」に格納されます。
その後、「self.value」というインスタンス変数に格納されます。
これでインスタンス化が完了し、インスタンス変数を含めたデータが「result」変数に格納されます。
後は「result.value」でデータを表示して完了です。
インスタンスメソッドを使う
最後にインスタンスメソッドを使う場合をみていきましょう。
○コード例
class TestClass():
# コンストラクタ
def __init__(self, data):
# インスタンス変数
self.value = data
# インスタンスメソッド
def test_method(self):
print(self.value)
# インスタンス化
result = TestClass("Hello World!")
result.test_method()
○実行結果
インスタンスメソッドはクラスメソッドと異なり、通常の関数と同じように記述すればOKです。
先程同様、インスタンス化を行い、インスタンス変数にデータを格納しています。
その後、「result.test_method()」によりインスタンスメソッドを呼び出します。
インスタンスメソッド内では、インスタンス変数に格納されたデータを出力しています。
まとめ
本記事ではPythonのクラスについて解説しました。
クラス変数やクラスメソッドの意味がお分かり頂けたでしょうか?
クラスについての理解が深まると、オブジェクト指向で書けるようになります。
クラスが使えるようになるには、用語の意味をまず理解し、それらを使いこなせるようになることが重要です。
今回紹介したコード例を自分で書き換えながら、クラスに関する理解を深めてくださいね。
次回はpythonの標準ライブラリを解説します。