python tutorial - Inheritance in Python - learn python - python programming

What is Inheritance?
- Inheritance is used to specify that one class will get most or all of its features from its parent class. It is a feature of Object Oriented Programming.
- It is a very powerful feature which facilitates users to create a new class with a few or more modification to an existing class.
- The new class is called child class or derived class and the main class from which it inherits the properties is called base class or parent class.
- The child class or derived class inherits the features from the parent class, adding new features to it. It facilitates re-usability of code.
Python Inheritance Syntax:
class BaseClass:
Body of base class
class DerivedClass(BaseClass):
Body of derived class
- Derived class inherits features from the base class, adding new features to it. This results into re-usability of code.
Example of Inheritance in Python:
- To demonstrate the use of inheritance, let us take an example.
- A polygon is a closed figure with 3 or more sides. Say, we have a class called Polygondefined as follows.
class Polygon:
def __init__(self, no_of_sides):
self.n = no_of_sides
self.sides = [0 for i in range(no_of_sides)]
def inputSides(self):
self.sides = [float(input("Enter side "+str(i+1)+" : ")) for i in range(self.n)]
def dispSides(self):
for i in range(self.n):
print("Side",i+1,"is",self.sides[i])
- This class has data attributes to store the number of sides, n and magnitude of each side as a list, sides.
- Method inputSides() takes in magnitude of each side and similarly, dispSides() will display these properly.
- A triangle is a polygon with 3 sides. So, we can created a class called Triangle which inherits from Polygon.
- This makes all the attributes available in class Polygon readily available in Triangle. We don't need to define them again (code re-usability). Triangle is defined as follows.
class Triangle(Polygon):
def __init__(self):
Polygon.__init__(self,3)
def findArea(self):
a, b, c = self.sides
# calculate the semi-perimeter
s = (a + b + c) / 2
area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
print('The area of the triangle is %0.2f' %area)
- However, class Triangle has a new method findArea() to find and print the area of the triangle.
- Here is a sample run.
>>> t = Triangle()
>>> t.inputSides()
Enter side 1 : 3
Enter side 2 : 5
Enter side 3 : 4
>>> t.dispSides()
Side 1 is 3.0
Side 2 is 5.0
Side 3 is 4.0
>>> t.findArea()
The area of the triangle is 6.00
- We can see that, even though we did not define methods like inputSides() or dispSides()for class Triangle, we were able to use them.
- If an attribute is not found in the class, search continues to the base class. This repeats recursively, if the base class is itself derived from other classes.
Image representation:


Syntax 1:
class DerivedClassName(BaseClassName):
<statement-1>
.
.
.
<statement-N>
Syntax 2:
class DerivedClassName(modulename.BaseClassName):
<statement-1>
.
.
.
<statement-N>
Parameter explanation:
- The name BaseClassName must be defined in a scope containing the derived class definition.
- You can also use other arbitrary expressions in place of a base class name.
- This is used when the base class is defined in another module.
Python Inheritance Example
- Let's see a simple python inheritance example where we are using two classes: Animal and Dog. Animal is the parent or base class and Dog is the child class.
- Here, we are defining eat() method in Animal class and bark() method in Dog class.
- In this example, we are creating instance of Dog class and calling eat() and bark() methods by the instance of child class only.
- Since, parent properties and behaviors are inherited to child object automatically, we can call parent and child class methods by the child instance only.
class Animal:
def eat(self):
print 'Eating...'
class Dog(Animal):
def bark(self):
print 'Barking...'
d=Dog()
d.eat()
d.bark()
Python Inheritance Example Output:
Eating...
Barking...