Page Contents
What is Inheritance?
Inheritance is the capability of one class to acquire the common state and behavior of another class while adding its own functionality . In Object-Oriented programming , the concept of inheritance provides the idea of re-usability.This means we can add additional features to a class without modifying it.
Inheritance In Python
In Python, inheritance is a mechanism that allows a class to inherit properties and methods from another class. This promotes code reuse and supports the concept of hierarchical classification.
Here’s a basic example of inheritance in Python:
class Animal: def __init__(self, species): self.species = species def make_sound(self): return "Default..." class Cat(Animal): # child class inherits the parent's __init__() function. # Overriding method of Animal class. def make_sound(self): return "Meow!!!" class Dog(Animal): # # child class inherits the parent's __init__() function. # Overriding method of Animal class. def make_sound(self): return "Woof!!!" dog = Dog("Jackie") print("Dog Specie: ", dog.species) print("Dog Sound", dog.make_sound()) cat = Cat("Tuna") print("Cat Specie: ", cat.species) print("Cat Sound: ", cat.make_sound()) # Output Dog Specie: Jackie Dog Sound Woof!!! Cat Specie: Tuna Cat Sound: Meow!!!
In this example:
- We have a base class
Animal
with a constructor__init__
that takes aspecies
parameter and a methodmake_sound
that’s meant to be overridden. - We then create two subclasses,
Dog
andCat
, which inherit fromAnimal
. These subclasses override themake_sound
method. - When you create an instance of
Dog
orCat
, you can access both the properties and methods of the parent class,Animal
, as well as the methods overridden in the subclass.
Inheritance in Python follows the syntax class SubClassName(BaseClassName)
. This indicates that SubClassName
inherits from BaseClassName
.
Adding __init__() Function to child class
When you add an __init__()
function to a child class in Python, you’re essentially overriding the __init__()
method of the parent class. This allows you to customize the initialization process for instances of the child class while still potentially utilizing the initialization logic from the parent class.
Here’s an example to illustrate adding an __init__()
function to a child class:
class Employee: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def show_details(self): print(self.firstname, self.lastname) class Developer(Employee): def __init__(self, fname, lname, dept): Employee.__init__(self, fname, lname) self.dept = dept x = Developer("Shivaay", "Chauhan", "Developer") x.show_details() print(x.dept) # Output Shivaay Chauhan Developer
Adding super() function in child class
You can define a super()
function that will make the child class inherit all the methods and properties from its parent:
class Employee: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def show_details(self): print(self.firstname, self.lastname) class Developer(Employee): def __init__(self, fname, lname, dept): # Using Super() function. super().__init__(fname, lname) self.dept = dept x = Developer("Shivaay", "Chauhan", "Developer") x.show_details() print(x.dept) # Output Shivaay Chauhan Developer