A constructor is a special kind of method which is used for initializing the instance variables during object creation. In this guide, we will see what is a constructor, types of it and how to use them in the python programming with examples.
1. What is a Constructor in Python?
Constructor is used for initializing the instance members when we create the object of a class.
For example:
Here we have a instance variable num
which we are initializing in the constructor. The constructor is being invoked when we create the object of the class (obj in the following example).
class DemoClass: # constructor def __init__(self): # initializing instance variable self.num=100 # a method def read_number(self): print(self.num) # creating object of the class. This invokes constructor obj = DemoClass() # calling the instance method using the object obj obj.read_number()
Output:
100
1.1 Syntax of constructor declaration
As we have seen in the above example that a constructor always has a name init
and the name init is prefixed and suffixed with a double underscore(__). We declare a constructor using def
keyword, just like methods.
def __init__(self): # body of the constructor
2. Types of constructors in Python
We have two types of constructors in Python.
1. default constructor – this is the one, which we have seen in the above example. This constructor doesn’t accept any arguments.
2. parameterized constructor – constructor with parameters is known as parameterized constructor.
2.1 Python – default constructor example
Note: An object cannot be created if we don’t have a constructor in our program. This is why when we do not declare a constructor in our program, python does it for us. Lets have a look at the example below.
Example: When we do not declare a constructor
In this example, we do not have a constructor but still we are able to create an object for the class. This is because there is a default constructor implicitly injected by python during program compilation, this is an empty default constructor that looks like this:
def __init__(self): # no body, does nothing.
Source Code:
class DemoClass: num = 101 # a method def read_number(self): print(self.num) # creating object of the class obj = DemoClass() # calling the instance method using the object obj obj.read_number()
Output:
101
Example: When we declare a constructor
In this case, python does not create a constructor in our program.
class DemoClass: num = 101 # non-parameterized constructor def __init__(self): self.num = 999 # a method def read_number(self): print(self.num) # creating object of the class obj = DemoClass() # calling the instance method using the object obj obj.read_number()
Output:
999
2.2 Python – Parameterized constructor example
When we declare a constructor in such a way that it accepts the arguments during object creation then such type of constructors are known as Parameterized constructors. As you can see that with such type of constructors we can pass the values (data) during object creation, which is used by the constructor to initialize the instance members of that object.
class DemoClass: num = 101 # parameterized constructor def __init__(self, data): self.num = data # a method def read_number(self): print(self.num) # creating object of the class # this will invoke parameterized constructor obj = DemoClass(55) # calling the instance method using the object obj obj.read_number() # creating another object of the class obj2 = DemoClass(66) # calling the instance method using the object obj obj2.read_number()
Output:
55 66
Parvat Jakhar says
what if we declare a parametrised constructor and call a default constructor
Chaitanya Singh says
The code inside default constructor(if any) would work. If the paramterized constructor has any initialization, the initialization would not happen in this case.