oursolutionarchitectoursolutionarchitect
  • Python Questions and Answers
  • Python - Programming Examples
  • Python - Quick Guide
  • Python - Useful Resources
  • Python - Discussion
    • Selected Reading
    • Q&A

    Python - Method Overriding


    You can always override your parent class methods. One reason for overriding parent's methods is that you may want special or different functionality in your subclass.

    Example

    class Parent: # define parent class
       def myMethod(self):
          print ('Calling parent method')
    
    class Child(Parent): # define child class
       def myMethod(self):
          print ('Calling child method')
    
    c = Child() # instance of child
    c.myMethod() # child calls overridden method
    

    When the above code is executed, it produces the following output

    Calling child method
    

    To understand inheritance in Python, let us take another example. We use following Employee class as parent class −

    class Employee:
       def __init__(self,nm, sal):
          self.name=nm
          self.salary=sal
       def getName(self):
          return self.name
       def getSalary(self):
          return self.salary
    

    Next, we define a SalesOfficer class that uses Employee as parent class. It inherits the instance variables name and salary from the parent. Additionally, the child class has one more instance variable incentive.

    We shall use built-in function super() that returns reference of the parent class and call the parent constructor within the child constructor __init__() method.

    class SalesOfficer(Employee):
       def __init__(self,nm, sal, inc):
          super().__init__(nm,sal)
          self.incnt=inc
       def getSalary(self):
          return self.salary+self.incnt
    

    The getSalary() method is overridden to add the incentive to salary.

    Example

    Declare the object of parent and child classes and see the effect of overriding. Complete code is below −

    class Employee:
       def __init__(self,nm, sal):
          self.name=nm
          self.salary=sal
       def getName(self):
          return self.name
       def getSalary(self):
          return self.salary
    
    class SalesOfficer(Employee):
       def __init__(self,nm, sal, inc):
          super().__init__(nm,sal)
          self.incnt=inc
       def getSalary(self):
          return self.salary+self.incnt
    
    e1=Employee("Rajesh", 9000)
    print ("Total salary for {} is Rs {}".format(e1.getName(),e1.getSalary()))
    s1=SalesOfficer('Kiran', 10000, 1000)
    print ("Total salary for {} is Rs {}".format(s1.getName(),s1.getSalary()))
    

    When you execute this code, it will produce the following output

    Total salary for Rajesh is Rs 9000
    Total salary for Kiran is Rs 11000
    

    Base Overridable Methods

    The following table lists some generic functionality of the object class, which is the parent class for all Python classes. You can override these methods in your own class −

    Sr.No Method, Description & Sample Call

    1

    __init__ ( self [,args...] )

    Constructor (with any optional arguments)

    Sample Call : obj = className(args)

    2

    __del__( self )

    Destructor, deletes an object

    Sample Call : del obj

    3

    __repr__( self )

    Evaluatable string representation

    Sample Call : repr(obj)

    4

    __str__( self )

    Printable string representation

    Sample Call : str(obj)