METHODS

In Python, methods are functions that are defined within a class and are associated with objects (instances) of that class. They define the behavior or actions that objects can perform. Here's an overview of methods in Python:

Instance Methods:

Instance methods are the most common type of methods in Python classes. They are defined with the def keyword and take self as the first parameter, which refers to the instance calling the method.

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

    def greet(self):
        return f"Hello, {self.name}!"

# Creating an object
obj = MyClass("Alice")

# Calling an instance method
print(obj.greet())  # Output: Hello, Alice!

Class Methods:

Class methods are defined with the @classmethod decorator and take cls as the first parameter, which refers to the class itself. They can be called on either the class or its instances.

class MyClass:
    @classmethod
    def say_hello(cls):
        return "Hello from MyClass!"

# Calling a class method
print(MyClass.say_hello())  # Output: Hello from MyClass!

Static Methods:

Static methods are defined with the @staticmethod decorator and do not take self or cls as parameters. They are independent of the class and can be called on either the class or its instances.

class MyClass:
    @staticmethod
    def add(x, y):
        return x + y

# Calling a static method
print(MyClass.add(2, 3))  # Output: 5

Special Methods (Magic Methods):

Special methods, also known as magic methods, are predefined method names in Python enclosed in double underscores. They enable operator overloading and provide functionality for built-in operations.

class MyClass:
    def __init__(self, x):
        self.x = x

    def __add__(self, other):
        return self.x + other

# Using a special method for addition
obj = MyClass(5)
result = obj + 3
print(result)  # Output: 8

Method Chaining:

Method chaining involves calling multiple methods on an object consecutively in a single line. It enhances readability and conciseness of code.

class MyClass:
    def __init__(self):
        self.value = 0

    def increment(self):
        self.value += 1
        return self

    def double(self):
        self.value *= 2
        return self

# Method chaining
obj = MyClass()
result = obj.increment().double().increment()
print(result.value)  # Output: 3

Methods are essential for defining the behavior of objects in Python. They enable encapsulation, inheritance, and polymorphism, key principles of object-oriented programming.