▶ クラスを基本から学びたい場合は以下の記事をご覧ください。
はじめに
今回はクラスメソッドを基本から解説します。まずはこれまで扱ってきたインスタンスメソッド、スタティックメソッドとの違いを整理するところから始めて、クラスメソッドの特徴、利用シーンを確認しましょう。その後、クラスメソッドの定義の仕方、呼び出し方までを扱います。
メソッドの種類
クラスメソッドはインスタンスとは紐づかないメソッドです。そのため、インスタンスの情報は使わず、クラスの情報を利用した処理をします。(クラスの情報も使わなければスタティックメソッドを使う)
▶ スタティックメソッドについては基本から学びたい場合は以下の投稿をどうぞ。
これまでで3つのメソッドがでてきたので、いったん整理しましょう。
種類 | 処理 | 第一パラメータ |
インスタンスメソッド | インスタンスと紐づくメソッド。イン スタンスの情報を使って処理をおこなう | 呼び出しに使ったインスタンス がselfにセットされる |
クラスメソッド | クラスに紐づくメソッド。クラスの情報 を使って処理をおこなう | 呼び出しに使ったクラスがclsに セットされる |
スタティックメソッド | インスタンスにもクラスにも紐づかない メソッド | 特定のクラスやインスタンス はセットされない |
こうして整理してみると、名前のとおりですね。ではクラスメソッドについて詳しく見ていきましょう。
クラスメソッド
クラスメソッドの特徴
クラスメソッドはインスタンスに紐づかないメソッドで、主にクラス内で便利な関数として使います。クラスの情報を使う、という点でスタティックメソッドと異なります。この点を除けば似たようなものですね。ただ、一つ特殊な使い方があります。FactoryMethodというクラスメソッド内でインスタンスを生成する、という使い方です。
この辺は学習が進んできた際にコードを学ぶことにして、まずはクラスメソッドの基本をおさえていきましょう。
クラスメソッドの作成
クラスメソッドは@classmethodというデコレータを使って定義します。次のような書式となります。
クラスメソッドの定義では第一パラメータには「cls」をおきます。clsにはクラス自体が渡されます。インスタンスメソッドの定義で第一パラメータに「self」をおいて、selfにインスタンス自体が綿わされるのと同じ要領ですね。
クラスメソッドのコール
クラスメソッドのコールは<クラス名>.<クラスメソッド名>()でおこないます。インスタンス名を使って、<インスタンス名><クラスメソッド名>()でもコールすることはできますが、インスタンスを介してクラスのメソッドを呼び出すメリットはないので、始めに示した<クラス名><クラスメソッド名>()の形でコールするようにしましょう。
まとめ
今回はクラスメソッドについて基本から解説しました。まとめておきましょう。
コメント