Python classmethod()はPython標準ライブラリの組み込み関数です!
Pythonには3種類のメソッドがあります。
- インスタンスメソッド
- クラスメソッド
- スタティックメソッド
ここでは、Pythonのクラスメソッドについて説明し、焦点を当てます。
それでは、はじめましょう。
Pythonのclassmethod()って何?
Pythonのclassmethod()は、オブジェクトからだけでなくクラスからも呼び出すことができます。
与えられた関数に対するクラスメソッドを返すメソッドをclassmethod()と呼びます。
これはすべてのオブジェクトで共有されるメソッドです。
Pythonプログラミング言語では、組み込み関数です。
classmethod()は関数と呼ばれる単一のパラメータを1つだけ取ります。
したがって、Pythonのclassmethod()メソッドの構文は以下のようになります。
Syntax : classmethod(function) |
この記事もチェック:Pythonでクラスのすべてのメソッドを一覧として表示する方法
Pythonのclassmethod()を利用する
ここで、Pythonのclassmethod()関数の例を見てみましょう。
以下の例では、変数を関数に渡す代わりに、クラス内で宣言された生徒の点数を表示するためにclassmethod()関数を使用しています。
class Student:
marks = 50
def printMarks( cls ):
print ( "Marks obtained by the Student is:" , cls .marks)
Student.printMarks = classmethod (Student.printMarks)
Student.printMarks() |
結果は以下の通りです。
= = = = = = = = = = = = = RESTART: C: / Users / Admin / Student.py = = = = = = = = = = = = =
Marks obtained by the Student is : 50
|
上記のコードで、私たちは次のことを観察します。
- メンバー変数marksを持つクラスStudentがあります。
- パラメータclsを受け入れる関数printMarksを持っています。
- クラスメソッド()は、常にクラスに付属しています。
- ここで、最初の引数は常にクラスそのものであり、クラスを定義する際に’cls’を使用するのはそのためです。
- そして、classmethod( )の引数としてStudent.printMarksというメソッドを渡しています。最後にprintMarksが呼び出され、クラス変数marksが表示されます。
デコレーターを使う @classmethod
classmethod( )関数を使用するもうひとつの方法は、@classmethod デコレーターを使用することです。
オブジェクトの代わりにデコレータメソッドを使用することで、クラス名を呼び出すことができます。
これは、クラスの任意のメソッドに適用することができます。
classmethod Decorator メソッドの構文は以下の通りです。
1つのパラメータと複数の引数をとります。
class c( object ):
@classmethod
def function( cls , argument1, argument2, ...):
/ * remaining code * /
|
前の例と同じように、関数を使う代わりにデコレータークラスメソッドを使用して、同じような例を実行する方法を見てみましょう。
class Student:
course = 'Python'
@classmethod
def printCourse( cls ):
print ( "Course opted by the Student is:" , cls .course)
Student.printCourse() |
結果は以下の通りです。
= = = = = = = = = = = = = RESTART: C: / Users / Admin / Student.py = = = = = = = = = = = = =
Course opted by the Student is : Python
|
上記の例では、@classmethod デコレータが printCourse( ) メソッドに適用されています。
これは、1 つのパラメータ cls を持ちます。
このメソッドは、ユーザーが関数にメンバ変数を渡す代わりに、自動的にクラスのメンバ変数を選択します。
この記事もチェック:Pythonでメモ化の実装|関数やクラス、デコレーターを使った方法を解説
まとめ
以上、Pythonのclassmethod()関数の2つの使い方について簡単に説明しました。
今後もPythonに関する記事をお届けします。