Python classmethod() ビルトイン関数

Python 3 ドキュメントより

メソッドをクラスメソッドに変換します。クラスメソッドは、インスタンスメソッドがインスタンスを暗黙的な最初の引数として受け取るのと同様に、クラス自体を暗黙的な最初の引数として受け取ります。

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
Morty Proxy This is a proxified and sanitized view of the page, visit original site.