Python classmethod() built-in function

From the Python 3 documentation

Transform a method into a class method. A class method receives the class as an implicit first argument, just like an instance method receives the instance.

Introduction

A classmethod is a method that is bound to the class and not the instance of the class. It takes the class itself as its first argument, conventionally named cls. This is in contrast to a regular instance method, which takes the instance as its first argument (self).

They are often used for factory methods that create instances of the class in a specific way.

Example

Here’s a common use case: creating a factory method that can instantiate the class from a different data format, like a dictionary.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @classmethod
    def from_dict(cls, data):
        # This is a factory method that creates a Person instance from a dictionary
        return cls(data['name'], data['age'])

    def display(self):
        print(f"Name: {self.name}, Age: {self.age}")

# Data for a new person
person_data = {'name': 'John', 'age': 30}

# Create a Person instance using the class method
p = Person.from_dict(person_data)

p.display()
# Output: Name: John, Age: 30

Subscribe to pythoncheatsheet.org

Join 16,702+ Python developers in a two times a month and bullshit free publication , full of interesting, relevant links.