Skip to main content

Introduction

Inheritance is an advanced Python concept that you probably won’t use when starting out. Most beginner programs work perfectly fine without it. However, as your projects grow, inheritance can make your code much cleaner by avoiding repetition.
Don’t worry if inheritance feels complex at first. Focus on understanding basic classes, and come back to inheritance when you find yourself writing similar classes with shared functionality.

What is inheritance?

Inheritance lets you create new classes based on existing ones. The new class (child) gets everything from the parent class, plus can add its own stuff. Think of it like this:
  • All dogs are animals (dogs inherit from animals)
  • Dogs have everything animals have, plus dog-specific things

Basic inheritance example

Adding attributes in child classes

Child classes can have their own attributes too:
super().__init__() calls the parent class’s __init__ method. This ensures the parent class sets up its attributes properly before the child class adds its own.

Overriding methods

Child classes can change how parent methods work:

Real-world use case

Here’s a practical example for AI applications:

When to use inheritance

Use inheritance when:
  • You have an “is a” relationship (Dog is an Animal)
  • Child classes share most behavior with parent
  • You want to extend functionality, not replace it
Don’t use inheritance when:
  • Classes are only slightly related
  • You just want to reuse one or two methods
  • The relationship feels forced

Common mistakes

What’s next?

Let’s explore when to use classes and when to keep things simple.

When to use classes

Best practices and guidelines