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 = age
person1 = Person("Alice", 30)
print(person1.name) # Output: Alice
print(person1.age) # Output: 30
2. 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 = brand
car1 = Car()
print(car1.brand) # Output: Toyota
car2 = Car("Honda")
print(car2.brand) # Output: Honda
4. 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 = grade
s1 = Student("John", 101, "A")
print(s1.name, s1.roll_no, s1.grade) # Output: John 101 A
5. 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 = balance
acc = BankAccount(-100)
print(acc.balance) # Output: 0
7. 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 objectsself
refers 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.