Python Hybrid Inheritance
Hybrid inheritance in Python combines multiple types of inheritance, such as single, multiple, and multilevel inheritance, within a single class hierarchy. It allows a class to inherit attributes and methods from multiple parent classes, often through a complex structure. Hybrid inheritance is useful for modeling real-world relationships where a class needs behaviors from various sources, but it requires careful design to avoid ambiguity, such as the diamond problem.
Diagram
The following diagram shows a hybrid inheritance structure where a class inherits from multiple parent classes, combining multilevel and multiple inheritance:

System: Base class with general functionality.Database: Inherits fromSystem, adds data storage capabilities.API: Inherits fromSystem, adds request handling capabilities.App: Inherits from bothDatabaseandAPI, combining their features.
Syntax
# Base class attributes and methodsclass BaseClass:# Inherits from BaseClassclass DerivedClass1(BaseClass):# Inherits from BaseClassclass DerivedClass2(BaseClass):# Inherits from DerivedClass1 and DerivedClass2class HybridClass(DerivedClass1, DerivedClass2):
BaseClass: The top-level parent class.DerivedClass1,DerivedClass2: Intermediate classes inheriting fromBaseClass.HybridClass: Inherits from both intermediate classes, forming a hybrid structure (mix of multilevel and multiple inheritance).
Note: Use commas in the class definition to specify multiple parent classes. Python’s Method Resolution Order (MRO) determines which parent class method is called in case of conflicts.
Example
This example defines an System base class with a process method. Database and API inherit from System, adding store and request methods, respectively. App uses hybrid inheritance to inherit from both Database and API, combining their behaviors. The describe method in App calls methods from all parent classes, demonstrating access to inherited functionality.
class System:def process(self):return "Processing data"class Database(System):def store(self):return "Storing data"class API(System):def request(self):return "Handling request"class App(Database, API):def describe(self):return f"{self.process()}, {self.store()}, {self.request()}"app = App()print(app.describe())
The output would be:
Processing data, Storing data, Handling request
Codebyte
Hybrid inheritance can lead to the diamond problem, where a class inherits the same method from multiple parents. Python resolves this using the Method Resolution Order (MRO), accessible via ClassName.mro(). Use hybrid inheritance judiciously to avoid complex hierarchies that are hard to maintain. Ensure parent classes are designed to work together to prevent method conflicts.
Contribute to Docs
- Learn more about how to get involved.
- Edit this page on GitHub to fix an error or make an improvement.
- Submit feedback to let us know how we can improve Docs.
Learn Python on Codecademy
- Looking for an introduction to the theory behind programming? Master Python while learning data structures, algorithms, and more!
- Includes 6 Courses
- With Professional Certification
- Beginner Friendly.75 hours
- Learn the basics of Python 3.12, one of the most powerful, versatile, and in-demand programming languages today.
- With Certificate
- Beginner Friendly.24 hours