Python

Python初学者向け:クラスメソッドを基本から解説

スポンサーリンク

 

この記事はこんな方におススメです
  • Pythonを始めたばかりで基本から学びたい方
  • Pythonの基本的な部分を速習してまずは全体像を把握しておきたい方

▶ クラスを基本から学びたい場合は以下の記事をご覧ください。

はじめに

今回はクラスメソッドを基本から解説します。まずはこれまで扱ってきたインスタンスメソッド、スタティックメソッドとの違いを整理するところから始めて、クラスメソッドの特徴、利用シーンを確認しましょう。その後、クラスメソッドの定義の仕方、呼び出し方までを扱います。

メソッドの種類

クラスメソッドはインスタンスとは紐づかないメソッドです。そのため、インスタンスの情報は使わず、クラスの情報を利用した処理をします。(クラスの情報も使わなければスタティックメソッドを使う)

▶ スタティックメソッドについては基本から学びたい場合は以下の投稿をどうぞ。

これまでで3つのメソッドがでてきたので、いったん整理しましょう。

種類処理第一パラメータ
インスタンスメソッドインスタンスと紐づくメソッド。イン
スタンスの情報を使って処理をおこなう
呼び出しに使ったインスタンス
がselfにセットされる
クラスメソッドクラスに紐づくメソッド。クラスの情報
を使って処理をおこなう
呼び出しに使ったクラスがclsに
セットされる
スタティックメソッドインスタンスにもクラスにも紐づかない
メソッド
特定のクラスやインスタンス
はセットされない
メソッドの種類

こうして整理してみると、名前のとおりですね。ではクラスメソッドについて詳しく見ていきましょう。

クラスメソッド

クラスメソッドの特徴

クラスメソッドはインスタンスに紐づかないメソッドで、主にクラス内で便利な関数として使います。クラスの情報を使う、という点でスタティックメソッドと異なります。この点を除けば似たようなものですね。ただ、一つ特殊な使い方があります。FactoryMethodというクラスメソッド内でインスタンスを生成する、という使い方です。

この辺は学習が進んできた際にコードを学ぶことにして、まずはクラスメソッドの基本をおさえていきましょう。

クラスメソッドの作成

クラスメソッドは@classmethodというデコレータを使って定義します。次のような書式となります。

@classmethod
def クラスメソッド名(cls, パラメータ):
処理

クラスメソッドの定義では第一パラメータには「cls」をおきます。clsにはクラス自体が渡されます。インスタンスメソッドの定義で第一パラメータに「self」をおいて、selfにインスタンス自体が綿わされるのと同じ要領ですね。

クラスメソッドのコール

クラスメソッドのコールは<クラス名>.<クラスメソッド名>()でおこないます。インスタンス名を使って、<インスタンス名><クラスメソッド名>()でもコールすることはできますが、インスタンスを介してクラスのメソッドを呼び出すメリットはないので、始めに示した<クラス名><クラスメソッド名>()の形でコールするようにしましょう。

スポンサーリンク

まとめ

今回はクラスメソッドについて基本から解説しました。まとめておきましょう。

クラスメソッドはインスタンスには紐づかず、クラスの情報を使った処理をするときに使います。(クラスの情報も使わないときはスタティックメソッドを使います)定義は、「@classmethod」を使い、第一パラメータには「cls」をおきます。この「cls」にはクラス自体が入ります。クラスメソッドのコールは<クラス名>.<クラスメソッド名>()とします。

コメント

タイトルとURLをコピーしました