Python Magic Methods
Python Magic Methods, also known as dunder methods, are special methods whose names begin and end with double underscores, such as __init__ and __str__. They allow custom classes to work naturally with Python’s built-in operations and provide greater control over how objects behave.
Magic methods can be used to initialize objects, customize operators, represent objects as strings, check membership, make instances callable, and create iterable objects. In this guide, we will explore several commonly used Python magic methods with practical examples.
Table of Contents
Key Python Magic Methods Explained
1. __init__ Method
The __init__ method is used to initialize an object’s attributes when an instance is created. It is automatically called after the object has been created.
# Python program to demonstrate the __init__ method
class Methods:
def __init__(self, name, std, marks):
print("The __init__ method has been called!")
self.name = name
self.std = std
self.marks = marks
# Creating an instance
student = Methods("Itika", 11, 98)
print(
f"Name: {student.name}, "
f"Standard: {student.std}, "
f"Marks: {student.marks}"
)
Output:
The __init__ method has been called!
Name: Itika, Standard: 11, Marks: 98
2. __new__ Method
The __new__ method is responsible for creating a new instance of a class. It is called before __init__ and can be customized when controlling the object creation process.
class Method:
def __new__(cls):
print("Creating an instance using __new__ method")
return super().__new__(cls)
def __init__(self):
print("Initializing the instance with __init__ method")
# Creating an instance
Method()
Output:
Creating an instance using __new__ method
Initializing the instance with __init__ method
3. __add__ Method
The __add__ method allows a class to define custom behavior for the + operator. This makes it possible to specify what should happen when two objects of a custom class are added together.
Example Without __add__
class Method:
def __init__(self, value):
self.attribute = value
instance_1 = Method("Attribute")
instance_2 = Method(" 27")
print(instance_1.attribute + instance_2.attribute)
Output:
Attribute 27
Example With __add__
class Method:
def __init__(self, value):
self.attribute = value
def __add__(self, other):
return self.attribute + other.attribute
instance_1 = Method("Attribute")
instance_2 = Method(" 27")
print(instance_1 + instance_2)
Output:
Attribute 27
4. __repr__ Method
The __repr__ method defines a string representation of an object. It is particularly useful when displaying objects during debugging or logging.
class Method:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def __repr__(self):
return f"Method(x={self.x}, y={self.y}, z={self.z})"
# Creating an instance
instance = Method(4, 6, 2)
print(instance)
Output:
Method(x=4, y=6, z=2)
5. __contains__ Method
The __contains__ method defines how an object responds when the in operator is used. It can be used to customize membership checking for a class.
class Method:
def __init__(self, container):
self.container = container
def __contains__(self, item):
return item in self.container
# Creating an instance
instance = Method([4, 6, 8, 9, 1])
print(4 in instance)
print(5 in instance)
Output:
True
False
6. __call__ Method
The __call__ method allows an instance of a class to be called using function-like syntax. This can make an object behave like a callable function.
class Method:
def __init__(self, multiplier):
self.multiplier = multiplier
def __call__(self, value):
return self.multiplier * value
instance = Method(7)
print(instance(5))
Output:
35
7. __iter__ Method
The __iter__ method can make an object iterable, allowing it to be used with a for loop. In this example, the method yields the square of each number within the specified range.
class Method:
def __init__(self, start, stop):
self.start = start
self.stop = stop
def __iter__(self):
for num in range(self.start, self.stop + 1):
yield num ** 2
# Iterating over an instance
for square in Method(3, 8):
print(square)
Output:
9
16
25
36
49
64
Frequently Asked Questions
1. What are magic methods in Python?
Magic methods are special methods surrounded by double underscores that allow custom classes to interact with Python’s built-in operations and behaviors.
2. What are dunder methods in Python?
Dunder methods are another name for magic methods because their names contain double underscores at both ends.
3. What is the use of __init__ in Python?
The __init__ method initializes an object’s attributes when an instance is created.
4. What is the difference between __new__ and __init__?
__new__ is involved in creating the object, while __init__ initializes the object after it has been created.
5. What does __call__ do in Python?
The __call__ method allows an object instance to be called using function-like syntax.
6. What is the purpose of __iter__?
The __iter__ method allows an object to provide an iterator so that it can be used in iteration operations such as a for loop.
7. What is __repr__ used for?
The __repr__ method provides a string representation of an object and is commonly useful for debugging and logging.
8. What is the __add__ method in Python?
The __add__ method is a magic method that allows you to define custom behavior for the + operator when it is used with objects of a class.
9. What is the purpose of the __contains__ method?
The __contains__ method defines how an object behaves when the in operator is used to check whether a particular value exists inside the object.
10. What does the __iter__ method do?
The __iter__ method makes a custom object iterable, allowing it to be used in loops such as a for loop.
Complete Advance AI Topics: Click Here
SQL Tutorial: Click Here
YT:- DecodeIT
Conclusion
Python Magic Methods provide a powerful way to customize the behavior of objects and integrate custom classes with Python’s built-in operations. Methods such as __init__, __new__, __add__, __repr__, __contains__, __call__, and __iter__ each provide different capabilities.
Understanding these dunder methods makes it easier to create flexible and feature-rich Python classes while taking advantage of Python’s object-oriented programming features.
Keywords: Python Magic Methods, python magic methods list, python magic methods documentation, python 3 magic methods, python dunder methods, magic methods in Python W3Schools, magic methods in Python example, dunder methods in Python W3Schools, python magic methods comparison, Python Magic Methods tutorial