Difference between Class Method, Static Method, and Instance Method

In this tutorial, we will learn about the class method, static method, and instance method. These methods are the core concepts of object-oriented programming in Python. Every Python enthusiast should be familiar with these methods and how to use them as per the requirements. Let's briefly introduce instance, class, and static methods.

What are Instance Methods?

As its name suggests, the instance methods are bound to the class instance and perform a set of actions on the data/value given by the object (instance) variables. If we use the instance variable inside the methods, these methods are called instance methods. It can modify the object state. The self keyword is the first parameter to work with the instance method, and the self refers to the current object.

Example -

Output:

Name: Craig Department: IT

Explanation -

We have defined the constructor that creates the instance variable using the Python object in the above code. In the show() function, we accessed both variables using the self keyword. We can access and modify the instance variable using the below code.

Example - 2

Output:

Name: Craig Department: IT
Name: Mathew Department: HR

Explanation -

We can see that we accessed the instance variable and changed its value. In the show() function, the instance method printed the updated values.

Class Methods

The class methods are bound to the class, not to the instance. It can modify the class state means it can change class configuration globally. It can access only the class variable. The class methods are used to create the factory methods. The syntax of class methods is different; instead of taking self parameter, they accept cls as a parameter that points to the class. It can't modify the instance state. However, the changes made by the class method reflect all instances of the class. The @classemethod decorator or classmethod() defines the class methods. Let's understand the following example.

Example -

Output:

Name: Craig Department: IT Salary: 25000
Name: Craig Department: IT Salary: 45000

Explanation -

In the above code, we have defined the class variable name salary and the class method change_salary(). The change_salary() function accessed the class variable salary, and it used to modify the salary for all the employees. We have done the same in the object creation part.

Static Method

The Static methods neither use self nor cls parameter; general utility methods perform the task in isolation. Static methods in Python are similar to those found in Java and C++, and they can't modify the behavior of the class or instance. The @staticmethod decorator or staticmethod() method defines the static methods. Let's see the below example. The static methods can be accessed using the class name and instance of the class.

Example -

Output:

Inside static method 100
Inside static method 100

Explanation -

We have created a static method that takes x as an argument in the above method. We calculated multiplication with itself, and we accessed the static method using the class name and the instance.

Let's understand the difference between class, instance, and static methods.

Class Methods vs. Static Methods vs. Instance Methods

We will describe some essential differences between these methods using some parameters. These differences will help you get more understanding of oops concepts.

Method Call

  • Instance methods can be accessed using the object/instance of the class.
  • The class methods and static methods can be accessed using the class name and the object of the class.

Modification

  • Instance methods can modify the behavior of the instance variables.
  • Class methods can modify the behavior of the class, that reflects to the entire class so with the all instances of the class.
  • Static methods perform their tasks in isolation. They didn't have any interaction with the class or instance methods.

Attributes Access

  • The instance method can access the both class variable and instance variables.
  • The class method can access the class variables.
  • The static method cannot access the class variables and static variables. Therefore, it cannot change the behavior of the class or instance state.

Class Bound and Instance Bound

  • The instance methods are bound with the object of the class so that we can access them using object.
  • It is good practice to access the class methods and static methods using the class name because they are bound to the class.

Important Notes

  • To get an good command on the oops concept of Python, we need to understand the class, instance, and static method.
  • Instance methods use self parameter to access the class instance.
  • Class methods don't require a class instance. They use the cls parameter instead of self parameter.
  • The static method neither uses a self nor the self. They act as the regular functions but can access through the class name.
  • The static and class methods communicate and (to a certain degree) enforce developer intent about class design. It can have maintenance benefits.

Conclusion

We have discussed some essential differences between the class, static, and instance methods. We have also explored examples and shown the different scenarios to use these methods.






Latest Courses