Python classmethod() ビルトイン関数
メソッドをクラスメソッドに変換します。クラスメソッドは、インスタンスメソッドがインスタンスを暗黙的な最初の引数として受け取るのと同様に、クラス自体を暗黙的な最初の引数として受け取ります。
Introduction
classmethod は、クラスにバインドされ、クラスのインスタンスにはバインドされないメソッドです。インスタンスメソッドが最初の引数としてインスタンス(self)を受け取るのとは対照的に、クラス自身を最初の引数として受け取ります。慣習的に cls と名付けられます。
これらは、特定の形式でクラスのインスタンスを作成するファクトリメソッドとしてよく使用されます。
Example
辞書など、異なるデータ形式からクラスをインスタンス化できるファクトリメソッドを作成する一般的な使用例を以下に示します。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def from_dict(cls, data):
# これは辞書から Person インスタンスを作成するファクトリメソッドです
return cls(data['name'], data['age'])
def display(self):
print(f"Name: {self.name}, Age: {self.age}")
# 新しい人物のデータ
person_data = {'name': 'John', 'age': 30}
# クラスメソッドを使用して Person インスタンスを作成
p = Person.from_dict(person_data)
p.display()
Name: John, Age: 30