Python Constructor
A constructor is just a method or function, but it is of special type. The work of the constructor is to initialise the instance members of the class.
There are two types of constructors:
The constructor is executed when the object of any class is created. The constructor also checks that there are enough number of resources avalable for the object to perform any startup task.
class Employee: def __init__(self,name,id): self.id = id; self.name = name; def display (self): print("ID: %d \nName: %s"%(self.id,self.name)) emp1 = Employee("John",101) emp2 = Employee("David",102) #accessing display() method to print employee 2 information emp2.display();
Creating the constructor in python
In python, the function __init__ is assigned the work of the constructor of the class i.e. the __init__() function is the constructor of the class. When a class is instantiated then at that time this method is called. Any number of arguments or parameters can be passes when we create the object of the class and that will depend upon the __init__() function definition. It is mostly used to initialize the class attributes. Each and every class must have a constructor, even if it simply relies on the default constructor.
For better understanding consider the following example to initialize the Employee class attributes.
Example: Counting the number of objects of a class class Student:      count = 0      def __init__(self):          Student.count = Student.count + 1 s1=Student() s2=Student() s3=Student() print("The number of students:",Student.count)
Non-Parameterized Constructor Example in Python class Student:      # Constructor - non parameterized      def __init__(self):          print("This is non parametrized constructor")      def show(self,name):          print("Hello",name) student = Student() student.show("John")
Parameterized Constructor Example in Python class Student:      # Constructor - parameterized      def __init__(self, name):          print("This is parametrized constructor")          self.name = name      def show(self):          print("Hello",self.name) student = Student("John") student.show()
In-built class functions in Python
The in-built functions defined in the class are described in the following table.
Function | Description |
---|---|
getattr(obj,name,default) | It is used to access the attribute of the object. |
setattr(obj, name,value) | It is used to set a particular value to the specific attribute of an object. |
delattr(obj, name) | It is used to delete a specific attribute. |
hasattr(obj, name) | It returns true if the object contains some specific attribute. |
Example: class Student:      def __init__(self,name,id,age):          self.name = name;          self.id = id;          self.age = age #creates the object of the class Student s = Student("John",101,22) #prints the attribute name of the object s print(getattr(s,'name')) # reset the value of attribute age to 23 setattr(s,"age",23) # prints the modified value of age print(getattr(s,'age')) # prints true if the student contains the attribute with name id print(hasattr(s,'id')) # deletes the attribute age delattr(s,'age') # this will give an error since the attribute age has been deleted print(s.age)
Built-in class attributes
In Python the class also contains some of the built in attributes of the class along with other attributes that will provide information about the class.
The built in class attributes are given in the table below .
Function | Description |
---|---|
__dict__ | It provides the dictionary containing the information about the class namespace. |
__doc__ | It contains a string which has the class documentation |
__name__ | It is used to access the class name. |
__module__ | It is used to access the module in which, this class is defined. |
__bases__ | It contains a tuple including all base classes. |
class Student:
     def __init__(self,name,id,age):
         self.name = name;
         self.id = id;
         self.age = age
     def display_details(self):
         print("Name:%s, ID:%d, age:%d"%(self.name,self.id))
s = Student("John",101,22)
print(s.__doc__)
print(s.__dict__)
print(s.__module__)