Constructors in Python
Constructors are generally used for instantiating an object. The task of
constructors is to initialize (assign values) to the data members of the class
when an object of class is created. In Python the __init__() method is called the
constructor and is always called when an object is created.
Syntax of constructor declaration:
def __init__(self):
# body of the constructor
Types of constructors:
Default constructor: The default constructor is simple constructor which
doesn’t accept any arguments. It’s definition has only one argument which
is a reference to the instance being constructed.
Parameterized constructor: constructor with parameters is known as
parameterized constructor. The parameterized constructor take its first
argument as a reference to the instance being constructed known as self
and the rest of the arguments are provided by the programmer.
Example of default constructor:
class GeekforGeeks:
geek = ""
# default constructor
def __init__(self):
self.geek = "GeekforGeeks"
# a method for printing data members
def print_Geek(self):
print(self. geek)
# creating object of the class
obj = GeekforGeeks()
# calling the instance method using the object obj
obj.print_Geek()
Example of parameterized constructor:
class Addition:
first = 0
second = 0
answer = 0
# parameterized constructor
def __init__(self, f, s):
self. first = f
self. second = s
def display(self):
print ("First number = " + str (self. first))
print ("Second number = " + str (self. second))
print ("Addition of two numbers = " + str(self.answer))
def calculate(self):
self.answer = self. first + self. second
# creating object of the class
# this will invoke parameterized constructor
obj = Addition(1000, 2000)
# perform Addition
obj. calculate()
# display result
obj. display()
Output :
First number = 1000
Second number = 2000
Addition of two numbers = 3000
DESTRUCTORS IN PYTHON:
Destructors are called when an object gets destroyed. In Python, destructors
are not needed as much needed in C++ because Python has a garbage collector
that handles memory management automatically.
The __del__ () method is a known as a destructor method in Python. It is called
when all references to the object have been deleted i.e when an object is
garbage collected.
Syntax of destructor declaration:
def __del__ (self):
# body of destructor
Example:
# Python program to illustrate destructor
class Employee:
# Initializing
def __init__(self):
print ('Employee created.')
# Deleting (Calling destructor)
def __del__(self):
print ('Destructor called, Employee deleted.')
obj = Employee()
del obj
Output:
Employee created.
Destructor called, Employee deleted.
Note: The destructor was called after the program ended or when all the
references to object are deleted i.e when the reference count becomes zero, not
when object went out of scope.
Example 2: This example gives the explanation of above mentioned note. Here,
notice that the destructor is called after the ‘Program End…’ printed.
# Python program to illustrate destructor
class Employee:
# Initializing
def __init__(self):
print('Employee created')
# Calling destructor
def __del__(self):
print("Destructor called")
def Create_obj():
print ('Making Object...')
obj = Employee()
print ('function end...')
return obj
print ('Calling Create_obj () function...')
obj = Create_obj()
Print ('Program End...')
Output:
Calling Create_obj() function...
Making Object...
Employee created
function end...
Program End...
Destructor called