Python Inheritance

Understanding Python Inheritance

Inheritance is a powerful feature in object-oriented programming that enables the creation of new classes based on existing classes. In Python, inheritance is implemented using the keyword class, which allows a new class to be created as a child or subclass of an existing class.

The Basics of Inheritance

Inheritance enables us to create a new class by inheriting properties from an existing class, known as the parent or base class. The child or derived class inherits all the attributes and methods of the parent class and can also add its own attributes and methods.

For instance, suppose we have a Vehicle class that has properties such as make, model, and year, and methods such as start and stop. We can create a Car class that inherits from the Vehicle class and adds its own properties such as num_doors and num_seats. The Car class can also override methods such as start and stop if needed.

Syntax for Inheritance in Python

The syntax for inheritance in Python is straightforward. To create a subclass, we need to specify the name of the parent class in parentheses after the name of the new class. Here's an example:

class Vehicle:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        
    def start(self):
        print(f"{self.make} {self.model} started.")
        
    def stop(self):
        print(f"{self.make} {self.model} stopped.")

class Car(Vehicle):
    def __init__(self, make, model, year, num_doors, num_seats):
        super().__init__(make, model, year)
        self.num_doors = num_doors
        self.num_seats = num_seats

In this example, the Car class inherits from the Vehicle class using the parentheses notation, and its __init__ method calls the parent class's __init__ method using the super() function.

Overriding Methods

In Python inheritance, a child class can override methods of the parent class if it needs to. This is done by defining a method with the same name in the child class.

class Vehicle:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        
    def start(self):
        print(f"{self.make} {self.model} started.")
        
    def stop(self):
        print(f"{self.make} {self.model} stopped.")

class Car(Vehicle):
    def start(self):
        print(f"{self.make} {self.model} revved the engine and started.")

In this example, the Car class overrides the start method of the Vehicle class to add a message that the engine is being revved before starting.

Multiple Inheritance

Python also allows multiple inheritance, where a subclass can inherit from multiple parent classes. To do this, we list the parent classes in parentheses, separated by commas.

class Animal:
    def __init__(self, name):
        self.name = name
        
    def speak(self):
        raise NotImplementedError("Subclass must implement abstract method")

class Mammal(Animal):
    def nurse(self):
        pass
    
class Reptile(Animal):
    def lay_eggs(self):
        pass
    
class Platypus(Mammal, Reptile):
    def __init__(self, name):
        super().__init__(name)

In this example, the Platypus class inherits from both the Mammal and Reptile classes, which both inherit from the Animal class. The Platypus class does not need to implement the speak method since it is inherited from the Animal class through its parent classes.

Benefits of Inheritance

Inheritance provides several benefits to programmers:

  1. Code Reusability: By inheriting from existing classes, we can reuse code without having to rewrite it. This saves time and reduces the amount of code we need to write.

  2. Extensibility: Inheritance enables us to add new functionality to existing classes without modifying their code directly. This helps to keep the code organized and easier to maintain.

  3. Polymorphism: Inheritance enables us to create objects that can be treated as instances of their parent or child classes, which allows for more flexible and modular code.

Conclusion

Inheritance is a fundamental concept in object-oriented programming that enables the creation of new classes based on existing classes. Python provides a simple and powerful syntax for implementing inheritance, which allows for code reusability, extensibility, and polymorphism.

By understanding the basics of inheritance and its benefits, programmers can create more efficient and modular code that can be easily maintained and extended in the future.


Do you find this helpful?