Python クラスメソッド

はじめに

みなさんこんにちはALEXです。今回はクラスメソッドについてご説明します。

classメソッドとは、インスタンスを生成しなくてもクラスから直接呼び出すことができるメソッドです。「@classmethod」というデコレータを使います。特徴は引数にクラスを受け取ることです。

使い方

クラス

まず、クラスを使ったコードを書いてみます。Human(人間)というクラスを定義します。

クラス変数として、kindを定義します。値に”human”をいれます。次にwhat_is_kindをいうメソッドを定義します。このメソッドで、クラス変数のkindをかえしてやります。メソッド内でクラス変数を読み出すためにはself.__class__.kindとしますので気を付けてください。

次にhuman=Human()としてインスタンス化しprint(human.what_is_kind())でkindを読み出します。結果、

が返ります。

クラスメソッド

次にこれをクラスメソッドで書いてみましょう。Bird(鳥)というクラスを定義します。

ここでも同じようにクラス変数kindを定義し、値にbirdを入れます。次にクラスメソッドとしてwhat_is_kindを定義します。defの前の行にデコレータ@classmethodを、()にclsを記述します。

クラスメソッドからクラス変数にアクセスするのに、クラスで定義したself.__class__.は不要です。これもクラスメソッドの特徴ですね。

kindを呼び出します。インスタンス化は必要ありません。

print(Bird.what_is_kind())で読み出すことができました。

上記のような書き方でクラスメソッドを使うことができます。

まとめ

クラスメソッドについてご説明しました。