The __init__ method is one of the most commonly used special methods in Python classes. It acts as a constructor — a function that is automatically called when a new object of the class is created. This method allows you to set up initial values for the object’s attributes, making your code more flexible and powerful.
1. What is __init__?
The __init__ method is a special built-in method in Python. It is used to initialize the attributes of a class when an object is instantiated.
It is automatically called when a new object is created using the class.
class Person:
def __init__(self, name, age):
self.name = name
self.age = ageperson1 = Person("Alice", 30)
print(person1.name) # Output: Alice
print(person1.age) # Output: 302. The Role of self
The first parameter of __init__ is always self, which refers to the instance being created. It allows access to the attributes and methods of that particular object.
3. Setting Default Values
You can also assign default values to parameters in the __init__ method.
class Car:
def __init__(self, brand="Toyota"):
self.brand = brandcar1 = Car()
print(car1.brand) # Output: Toyota
car2 = Car("Honda")
print(car2.brand) # Output: Honda4. Multiple Parameters
The __init__ method can take as many arguments as needed to initialize the object properly.
class Student:
def __init__(self, name, roll_no, grade):
self.name = name
self.roll_no = roll_no
self.grade = grades1 = Student("John", 101, "A")
print(s1.name, s1.roll_no, s1.grade) # Output: John 101 A5. Without __init__
If you do not define an __init__ method, Python will use a default one that takes no arguments and doesn’t initialize attributes.
class Empty:
pass
e = Empty()
print(e) # Output: <__main__.Empty object at ...>6. Custom Initialization Logic
You can include logic like calculations or validations inside __init__.
class BankAccount:
def __init__(self, balance):
if balance < 0:
balance = 0
self.balance = balanceacc = BankAccount(-100)
print(acc.balance) # Output: 07. Example: Initializing a List of Items
class ShoppingCart:
def __init__(self, user):
self.user = user
self.items = []cart = ShoppingCart("Alice")
print(cart.user) # Output: Alice
print(cart.items) # Output: []8. Summary
__init__is a constructor used to initialize new objectsselfrefers to the instance being created- You can assign default values to parameters
- It can contain logic for validation or computation
- It makes your classes more flexible and maintainable
9. Final Thoughts
The __init__ method is your entry point to customizing object creation in Python. Mastering its use is crucial to writing clean, modular, and object-oriented Python code. Whether you're building simple models or complex systems, __init__ helps you create well-defined objects with clear and consistent structure.
