Skip to content

Methods in Python

In Python, a method is a function that is associated with an object. Methods are defined inside a class and are designed to work on the data contained within that class. They are invoked on objects and can access or modify the object's attributes.


Types of Methods in Python

1. Instance Methods

Instance methods are the most common type of methods in Python. They operate on an instance of the class and can access the instance's attributes and other methods.

Syntax:

class ClassName:
    def instance_method(self, arg1, arg2):
        # Method body

Example:

class Car:
    def __init__(self, brand, model):
        self.brand = brand
        self.model = model

    def display_info(self):
        return f"Car Brand: {self.brand}, Model: {self.model}"

car = Car("Toyota", "Corolla")
print(car.display_info())  # Output: Car Brand: Toyota, Model: Corolla

2. Class Methods

Class methods are used to operate on the class itself, rather than an instance. They are defined using the @classmethod decorator and take cls as the first parameter instead of self.

Syntax:

class ClassName:
    @classmethod
    def class_method(cls, arg1, arg2):
        # Method body

Example:

class Employee:
    employee_count = 0

    def __init__(self, name):
        self.name = name
        Employee.employee_count += 1

    @classmethod
    def total_employees(cls):
        return cls.employee_count

emp1 = Employee("Alice")
emp2 = Employee("Bob")
print(Employee.total_employees())  # Output: 2

3. Static Methods

Static methods are methods that do not operate on the instance or class directly. They are defined using the @staticmethod decorator and do not take self or cls as parameters.

Syntax:

class ClassName:
    @staticmethod
    def static_method(arg1, arg2):
        # Method body

Example:

class MathUtils:
    @staticmethod
    def add_numbers(a, b):
        return a + b

print(MathUtils.add_numbers(5, 10))  # Output: 15

Special Methods

Special methods, also known as dunder (double underscore) methods, allow you to define the behavior of objects in certain situations. These methods start and end with double underscores (__).

Example of Special Methods:

__init__: Constructor method to initialize an object.

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

person = Person("John", 30)
print(person.name)  # Output: John

__str__: Method to define the string representation of an object.

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

    def __str__(self):
        return f"Name: {self.name}, Age: {self.age}"

person = Person("John", 30)
print(person)  # Output: Name: John, Age: 30

Key Differences Between Method Types

Type Access to Instance Attributes Access to Class Attributes Independent of Instance/Class
Instance Method Yes Yes No
Class Method No Yes No
Static Method No No Yes

Summary

  1. Instance Methods: Operate on object instances and can access instance attributes.
  2. Class Methods: Operate on the class and are useful for accessing or modifying class attributes.
  3. Static Methods: Do not rely on instance or class data and are primarily utility functions.
  4. Special Methods: Enable customization of object behavior in specific scenarios.

These concepts make Python an incredibly flexible and powerful object-oriented language.