What is a class method in Python?

AI Maverick
5 min readJan 31, 2023

Welcome to another Python tutorial with me!

Python

A class method in Python is a method that is bound to the class and not the instance of the object. It can be called on the class itself and not an instance of the class. Class methods are defined using the @classmethod decorator, followed by a method with the first argument as “cls” (representing the class itself). The class method operates on the class and not an instance, so it can modify class-level data rather than instance-level data.

Introduction

@classmethod is a decorator in Python that specifies that a method is a class method. A class method is a method that is bound to the class and not the instance of the object. In other words, it's a method that operates on the class rather than on instances of the class.

The cls parameter refers to the class itself and can be used to access class-level attributes and methods.

In summary, @classmethod allows you to define a method that operates on the class itself, rather than on instances of the class, and cls is the convention for referring to the class within the body of the class method.

Note: If you don’t need to create an instance of the object, and you only want to define class-level attributes and methods, you don’t need to use the __init__ method. Instead, you can use class methods and class-level attributes, which are shared among all instances of the class.

Methods in Python

In Python, there are three types of methods: instance methods, class methods, and static methods.

Instance methods are the most commonly used type of method. They are called on an instance of a class and have access to the attributes and methods of that instance. They are declared using the def keyword, and the first parameter is usually self, which refers to the instance on which the method is called.

Class methods are methods that are bound to the class and not the instance of the class. They are declared using the @classmethod decorator and the first parameter is cls, which refers to the class itself, not an instance of the class. Class methods are often used to create alternative constructors for a class or to provide class-level utility methods.

Static methods are methods that are bound to the class and not the instance, but unlike class methods, they don’t have access to the class itself. They are declared using the @staticmethod decorator and don't receive any special first parameters like self or cls. Static methods are used to provide utility functions that are related to a class but don't depend on its state.

So, in summary:

  • Instance methods are called on instances and have access to instance-specific data and methods.
  • Class methods are called on the class and have access to the class itself.
  • Static methods are called on the class and don’t have access to the class or instance-specific data.

Instance methods

Instance methods in Python are methods that are bound to a specific instance of a class. They have access to the instance-specific data and other instance methods. They are declared using the def keyword inside a class and the first parameter is self, which refers to the instance on which the method is called.

class Student:
def __init__(self, name, roll_no):
self.name = name
self.roll_no = roll_no

def display_student_info(self):
print(f"Name: {self.name}, Roll Number: {self.roll_no}")

student = Student("John", 123)
student.display_student_info()

The above example display_student_info is an instance method. It is declared inside the Student class and has access to the instance variables name and roll_no via self. When the method is called on an instance of the Student class, it prints the name and roll number of that particular student.

Instance methods are useful when you need to perform operations or make decisions based on instance-specific data. They allow you to define behavior that is specific to each instance of a class and provides a way to access the instance data from within the class.

Class methods

Class methods in Python are methods that are bound to the class and not an instance of the class. They are declared using the @classmethod decorator and the first parameter is cls, which refers to the class itself, not an instance of the class.

For instance, you might want to create a class method that returns the number of instances of a class that have been created.

class Student:
count = 0

def __init__(self, name, roll_no):
self.name = name
self.roll_no = roll_no
Student.count += 1

@classmethod
def get_student_count(cls):
return cls.count

student1 = Student("John", 123)
student2 = Student("Jane", 124)
print("Number of students:", Student.get_student_count())

In the example, the get_student_count method is a class method. It is declared using the @classmethod decorator and the first parameter is cls, which refers to the class Student. The method returns the value of the count class variable, which is incremented every time a new Student instance is created.

Static methods

Static methods in Python are methods that are bound to the class and not an instance of the class, but unlike class methods, they don’t have access to the class itself. They are declared using the @staticmethod decorator and don't receive any special first parameters like self or cls.

Static methods are used to provide utility functions that are related to a class but don’t depend on its state. They are often used to define utility functions that don’t modify any class or instance state.

import math

class Circle:
def __init__(self, radius):
self.radius = radius

@staticmethod
def get_circle_area(radius):
return math.pi * radius * radius

circle = Circle(5)
print("Circle area:", Circle.get_circle_area(5))

In the above example, the get_circle_area method is a static method. It is declared using the @staticmethod decorator and doesn't receive any special first parameter. The method uses the math.pi constant and the radius to calculate the area of a circle. Note that the method doesn't have access to the instance-specific data and doesn't modify the instance or class state.

Static methods are useful when you need to provide utility functions that are related to a class but don’t depend on its state. They provide a way to define behavior that doesn’t depend on instance-specific data and doesn’t modify the class or instance state.

Conclusion

In conclusion, instance methods, class methods, and static methods are all ways to define methods in a Python class.

Instance methods are methods that are bound to a specific instance of a class and have access to the instance-specific data and other instance methods. They are declared using the def keyword and the first parameter is self.

Class methods are methods that are bound to the class and not an instance of the class. They have access to the class itself and class-level data. They are declared using the @classmethod decorator and the first parameter is cls.

Static methods are methods that are bound to the class and not an instance of the class, but unlike class methods, they don’t have access to the class itself. They are declared using the @staticmethod decorator and don't receive any special first parameter.

Each type of method serves a different purpose, and the choice between them depends on the behavior you want to define and the data you need to access. Instance methods provide access to instance-specific data, class methods provide access to class-level data, and static methods provide utility functions that don’t depend on the class or instance state.

https://samanemami.github.io/

--

--