Inheritance in Python

Learn Python @ Freshers.in

In the world of programming, Object-Oriented Programming (OOP) is a powerful paradigm that enables you to organize your code into reusable and efficient structures. One of the key concepts in OOP is Inheritance, which allows you to create new classes that are based on existing classes. In this comprehensive guide, we will delve deep into inheritance in Python, providing you with detailed explanations, examples, and practical use cases to help you harness its full potential.

Understanding Inheritance

Inheritance is a fundamental concept in OOP, where a new class (called the child class or subclass) can inherit attributes and methods from an existing class (called the parent class or base class). This relationship allows you to reuse code, promote code organization, and create hierarchies of classes.

Syntax of Inheritance in Python

In Python, inheritance is implemented using the following syntax:

class ParentClass:
    # Parent class attributes and methods

class ChildClass(ParentClass):
    # Child class attributes and methods

Here, ChildClass inherits from ParentClass. The child class can access the attributes and methods of the parent class, and you can also override or extend them in the child class.

Practical Examples

Example 1: Basic Inheritance

Let’s start with a basic example to illustrate inheritance. We’ll create a Vehicle class as the parent class and a Car class as the child class, inheriting from Vehicle.

class Vehicle:
    def __init__(self, brand):
        self.brand = brand

    def start_engine(self):
        print(f"{self.brand} engine started.")

class Car(Vehicle):
    def drive(self):
        print(f"{self.brand} is now moving.")

# Create an instance of the Car class
my_car = Car("Toyota")
my_car.start_engine()  # Output: Toyota engine started.
my_car.drive()        # Output: Toyota is now moving.

In this example, the Car class inherits the start_engine method from the Vehicle class and adds its own method, drive.

Example 2: Method Overriding

Inheritance allows you to override methods in the child class. Let’s continue with our Vehicle and Car classes and override the start_engine method in the Car class.

class Car(Vehicle):
    def start_engine(self):
        print(f"{self.brand} car's engine started.")

# Create an instance of the Car class
my_car = Car("Ford")
my_car.start_engine()  # Output: Ford car's engine started.

Here, the start_engine method in the Car class overrides the method in the Vehicle class.

Author: user