Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

Python

【Python】クラスメソッドの書き方と使い方の基本

動画で解説を見る



開発環境

  • Python version: python 3.10.11

Pythonのクラスメソッドとは

Pythonのクラスメソッドとは、クラスに属するメソッドです。

各インスタンスに紐づかせるインスタンスメソッドに対し、クラスメソッドはクラス自体に紐づかせるためのメソッドです。

インスタンスメソッドは、インスタンスを介してアクセスすることができましたが、クラスメソッドはクラスを介してアクセスすることができます。

公式リファレンス:https://docs.python.org/ja/3/tutorial/classes.html

Pythonのクラスメソッドの使いどころ

クラスメソッドは、特定のクラス全体に関連する操作を実行する場合に便利です。

例えば、クラスメソッド内で新しいインスタンスを生成して返すファクトリメソッドとして使用することにより、オブジェクトの生成と初期化の抽象化を容易にすることができます。

また、クラス変数の操作やオブジェクトの初期化を代替することができたり、、同じ基底クラスから派生する複数のクラスを生成する際に有用です。

Pythonのクラスメソッドの書き方

Pythonのクラスメソッドの書き方ご紹介します。

デコレータの@classmethod

@classmethodは、Pythonでメソッドがクラスメソッドであることを示すデコレータです。

デコレータは関数やメソッドを修飾するための構文で、関数やメソッドの上に@デコレータ名の形で記述します。

クラスメソッドはクラス全体に関連する操作を行うためのメソッドであり、通常、クラス自体に対する処理を行う際に使用されます。

第一引数のcls

クラスメソッドは第一引数としてクラス自体を表すためにclsを使用します。

通常のメソッドがインスタンスにアクセスするためにselfを使用するのと同様に、クラスメソッドはクラスにアクセスするためにclsを使用します。

clsは単なる慣習であり、Pythonの言語仕様ではなく他の名前を使用することも可能ですが、クラスメソッドではclsを使ってクラスを表現する方が明示的で一般的です。

Pythonのクラスメソッドの使い方

Pythonのクラスメソッドのよくあるパターンをサンプルコードを用いて使い方の解説をしていきます。

Pythonのクラスメソッドをクラスオブジェクトから実行するパターン

Pythonのクラスメソッドをクラスオブジェクトから実行するパターンです。

上記はCalcClassという名前のクラスを定義しています。

@classmethodデコレータが使われており、これによってcalc_area_of_a_circleメソッドがクラスメソッドとして定義されています。

また、メソッド内のclsパラメータはクラス自体を指します。

サンプルコードではクラスメソッドcalc_area_of_a_circleを呼び出し、円の面積を計算した結果を標準出力に出力しています。

クラスメソッドはクラスに属し、インスタンス化されたオブジェクトではなくクラス自体に関連付けられています。

Pythonのクラスメソッドをファクトリーメソッドとして実行するパターン

Pythonのクラスメソッドをファクトリーメソッドとして実行するパターンです。

まず、create_circleメソッドを使用して、半径が5の新しい円のインスタンスを生成しています。

そして、生成した円のインスタンスに対して、calculate_areaメソッドを呼び出して面積を計算し、結果をresult変数に格納し、計算された円の面積を最後に表示しています。

おわりに

Pythonのクラスメソッドの使い方を解説してきました。

通常はインスタンスメソッドを使用することが多いかとおもいますが、インスタンスメソッドとの違いがわかってくれば、クラスメソッドとインスタンスメソッドの使い分けもしやすくなります。

また、クラスメソッドを使いこなすことができれば、ファクトリーメソッドなど応用的な使い方もできますので、最初は難しいかもしれませんが、クラスメソッドを使いこなしていきましょう。

Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

-Python