Yandex

Python classmethod() Function – Convert Method to Class Method



Python classmethod() Function

The classmethod() function in Python is used to define a method that belongs to the class rather than to any specific instance of the class. This means you can access and modify class-level data.

Syntax

classmethod(function)

Parameters:

  • function – The method you want to convert to a class method.

Returns:

  • A method that is bound to the class and not the instance.

Example: Defining a Class Method

class Person:
    species = "Human"

    def __init__(self, name):
        self.name = name

    @classmethod
    def get_species(cls):
        return cls.species

print(Person.get_species())
Human

How It Works

  • @classmethod is a decorator that makes the method receive the class (cls) as the first argument.
  • This allows the method to access or modify class-level attributes.

Alternative Without Decorator

class Demo:
    def normal_method():
        pass

Demo.class_method = classmethod(Demo.normal_method)

Real-World Use Case

Class methods are useful for creating factory methods—methods that return class instances using different input formats.

class Date:
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day

    @classmethod
    def from_string(cls, date_str):
        y, m, d = map(int, date_str.split('-'))
        return cls(y, m, d)

d = Date.from_string("2025-05-14")
print(d.year, d.month, d.day)
2025 5 14

Difference Between classmethod() and staticmethod()

Feature classmethod() staticmethod()
First Parameter cls (the class) None
Access to Class Data Yes No
Typical Use Factory methods, altering class-level state Utility methods that don't access class or instance

Common Mistakes

  • Forgetting to use cls as the first argument in a class method.
  • Trying to access instance attributes directly—use instance methods for that instead.

Interview Tip

You may be asked to explain the difference between classmethod(), staticmethod(), and regular methods. Practice defining each one!

Summary

  • classmethod() binds a method to the class, not the instance.
  • Receives the class as the first argument (cls).
  • Useful for factory methods and working with class attributes.

Practice Problem

Create a class Book with a class method from_string() that takes a string like "Title-Author" and returns a new Book object.

class Book:
    def __init__(self, title, author):
        self.title = title
        self.author = author

    @classmethod
    def from_string(cls, book_str):
        title, author = book_str.split('-')
        return cls(title, author)

b = Book.from_string("Python101-John Doe")
print(b.title, b.author)
Python101 John Doe


Welcome to ProgramGuru

Sign up to start your journey with us

Support ProgramGuru.org

You can support this website with a contribution of your choice.

When making a contribution, mention your name, and programguru.org in the message. Your name shall be displayed in the sponsors list.

PayPal

UPI

PhonePe QR

MALLIKARJUNA M