Python Constructor Tutorial
Constructors are a fundamental aspect of Object-Oriented Programming (OOP). In Python, they play a pivotal role in setting up class instances and object initialization.
What is a Constructor?
- A constructor is a unique method associated with a class, automatically invoked upon the creation of an object from that class.
- It’s crucial for initializing object properties and executing any startup procedures required for the object.
- Essentially, it’s a tool that aids in avoiding repetitive code and ensures that an object is in a valid state right after its creation.
How Does It Work?
Consider the following code, where the constructor initializes user details:
user1 = User('Alice', 'Coder', 'Windows')
user2 = User('Bea', 'Marketer', 'Mac')
Without a constructor, this initialization would be cumbersome:
user1.name = 'Alice'
user1.job = 'Coder'
Key Points about Constructors:
- A class must have only one constructor.
- In Python, the constructor method is always named
def __init__(self):. - It’s imperative to understand and use constructors efficiently to leverage the power of OOP in Python.

Constructor Rules in Python
- Must be named
__init__. - Always define it with the
selfparameter, which refers to the object being created. - It shouldn’t return any value other than
None. - Remember, only one constructor is permissible in a class.
- Its primary use is for initializing object properties.
A Practical Example
The syntax for defining a constructor within a class:
class Example:
def __init__(self):
pass
When you create an instance of the Example class, the constructor gets executed:
obj1 = Example()
obj2 = Example()
A more illustrative example:
class Computer:
def __init__(self, name, speed):
self.name = name
self.speed = speed
Here, every object gets unique properties when instantiated, reflecting the real-world entities they represent.
apple = Computer('Apple', 100)
iphone = Computer('Apple iOS', 10)
watch = Computer('Watch', 1)
Visual Representation
In this example, class C possesses a constructor and a method named see. Notice the constructor’s name: __init__.
class C:
def __init__(self):
print('Constructor activated.')
def see(self):
print('C')
What’s unique about the constructor is its automatic execution upon object instantiation:
obj = C()
obj.see()
It’s evident from the output sequence that the constructor gets called immediately when an object is instantiated.

Real-world Analogy
Picture the constructor as a blueprint for a vehicle, like a car. This blueprint specifies default properties, such as the number of wheels or doors.
class Car:
def __init__(self):
self.wheels = 4
self.doors = 2
self.seats = 2
Objects made using this blueprint will inherently possess the above properties:
obj1 = Car()
obj2 = Car()
Varieties of Constructors
Python offers two kinds of constructors:
Default Constructor: It doesn’t require any parameters.
class MyClass:
def __init__(self):
...Parameterized Constructor: This accepts one or more parameters.
class MyClass:
def __init__(self, x, y, w, h):
...
A default constructor is beneficial for initializing default values or calling specific initialization methods. Without it, there’s no way to set parameters or invoke methods during object creation.
class Tesla:
def __init__(self):
self.wheels = 4
self.lights = 4
Embracing constructors will streamline your coding efforts, promote efficient programming, and ensure objects are always in a consistent, predictable state.