Bird
Raised Fist0
Pythonprogramming~20 mins

Why multiple inheritance exists in Python - Challenge Your Understanding

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Multiple Inheritance Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Why use multiple inheritance in Python?

Why does Python support multiple inheritance?

ATo prevent any class from inheriting methods or properties.
BTo force a class to have only one parent class to avoid complexity.
CTo make sure classes cannot share any attributes.
DTo allow a class to inherit features from more than one parent class, enabling code reuse and combining behaviors.
Attempts:
2 left
💡 Hint

Think about how combining features from different sources can help in programming.

Predict Output
intermediate
2:00remaining
Output of multiple inheritance example

What is the output of this Python code?

Python
class A:
    def greet(self):
        return 'Hello from A'

class B:
    def greet(self):
        return 'Hello from B'

class C(A, B):
    pass

obj = C()
print(obj.greet())
AHello from B
BHello from A
CHello from C
DTypeError
Attempts:
2 left
💡 Hint

Look at the order of inheritance in class C and how Python resolves method calls.

Predict Output
advanced
2:00remaining
Understanding method resolution order (MRO)

What will be printed by this code?

Python
class X:
    def who(self):
        return 'X'

class Y(X):
    def who(self):
        return 'Y'

class Z(X):
    def who(self):
        return 'Z'

class A(Y, Z):
    pass

obj = A()
print(obj.who())
AZ
BX
CY
DTypeError
Attempts:
2 left
💡 Hint

Check the order of classes in A(Y, Z) and how Python chooses methods.

🧠 Conceptual
advanced
2:00remaining
Why might multiple inheritance cause problems?

What is a common problem caused by multiple inheritance?

AIt can cause ambiguity when two parent classes have methods with the same name.
BIt always makes programs run slower.
CIt prevents any code reuse.
DIt disallows creating new classes.
Attempts:
2 left
💡 Hint

Think about what happens if two parents have the same method name.

🚀 Application
expert
3:00remaining
Predict the output with diamond inheritance

What will this code print?

Python
class Base:
    def greet(self):
        return 'Hello from Base'

class Left(Base):
    def greet(self):
        return 'Hello from Left'

class Right(Base):
    def greet(self):
        return 'Hello from Right'

class Child(Left, Right):
    pass

obj = Child()
print(obj.greet())
AHello from Left
BHello from Right
CHello from Base
DTypeError
Attempts:
2 left
💡 Hint

Consider the diamond shape of inheritance and Python's MRO.

Practice

(1/5)
1. Why does Python support multiple inheritance?
easy
A. To allow a class to inherit features from more than one parent class
B. To make code run faster
C. To prevent any class from having methods
D. To force all classes to have the same methods

Solution

  1. Step 1: Understand inheritance basics

    Inheritance lets a class use methods and properties from a parent class.
  2. Step 2: Recognize multiple inheritance purpose

    Multiple inheritance allows a class to get features from more than one parent, combining abilities without rewriting code.
  3. Final Answer:

    To allow a class to inherit features from more than one parent class -> Option A
  4. Quick Check:

    Multiple inheritance = inherit from multiple parents [OK]
Hint: Multiple inheritance means many parents, many features [OK]
Common Mistakes:
  • Thinking it makes code faster
  • Believing it removes methods
  • Assuming all classes become identical
2. Which of the following is the correct syntax to define a class Child that inherits from two parent classes Parent1 and Parent2?
easy
A. class Child : Parent1, Parent2
B. class Child inherits Parent1, Parent2:
C. class Child -> Parent1, Parent2:
D. class Child(Parent1, Parent2):

Solution

  1. Step 1: Recall Python class inheritance syntax

    In Python, parent classes are listed inside parentheses after the class name.
  2. Step 2: Identify correct syntax for multiple inheritance

    Multiple parents are separated by commas inside the parentheses.
  3. Final Answer:

    class Child(Parent1, Parent2): -> Option D
  4. Quick Check:

    Parents in parentheses, comma separated [OK]
Hint: Use parentheses with commas for multiple parents [OK]
Common Mistakes:
  • Using 'inherits' keyword (not Python syntax)
  • Using colon instead of parentheses
  • Using arrow '->' which is invalid
3. What will be the output of this code?
class A:
    def greet(self):
        return 'Hello from A'

class B:
    def greet(self):
        return 'Hello from B'

class C(A, B):
    pass

obj = C()
print(obj.greet())
medium
A. Hello from A
B. Error: Method greet not found
C. Hello from C
D. Hello from B

Solution

  1. Step 1: Understand method resolution order (MRO)

    Python looks for methods in the order of parent classes listed. Here, C inherits from A first, then B.
  2. Step 2: Determine which greet method is called

    Since A is first, C uses A's greet method, returning 'Hello from A'.
  3. Final Answer:

    Hello from A -> Option A
  4. Quick Check:

    MRO uses first parent method [OK]
Hint: First parent class method is used in conflicts [OK]
Common Mistakes:
  • Choosing method from second parent
  • Expecting child's own method when none defined
  • Thinking it causes error
4. Find the error in this code that tries to use multiple inheritance:
class X:
    def method(self):
        return 'X'

class Y:
    def method(self):
        return 'Y'

class Z(X Y):
    pass
medium
A. Method names must be different in multiple inheritance
B. Missing comma between parent classes in class Z definition
C. Classes cannot have methods with the same name
D. class Z should inherit only one class

Solution

  1. Step 1: Check class Z syntax

    Parent classes must be separated by commas inside parentheses.
  2. Step 2: Identify missing comma

    Code has 'class Z(X Y):' missing comma between X and Y.
  3. Final Answer:

    Missing comma between parent classes in class Z definition -> Option B
  4. Quick Check:

    Parents separated by commas [OK]
Hint: Separate parent classes with commas [OK]
Common Mistakes:
  • Thinking method names must differ
  • Believing multiple methods cause error
  • Assuming only one parent allowed
5. You want to create a class SmartPhone that has features from both Camera and Phone classes. Which is the best reason to use multiple inheritance here?
hard
A. To make the phone run faster
B. To avoid creating any methods in SmartPhone
C. To combine camera and phone features without rewriting their code
D. To force Camera and Phone to share the same methods

Solution

  1. Step 1: Understand the goal of SmartPhone class

    SmartPhone needs to have both camera and phone abilities.
  2. Step 2: Recognize multiple inheritance benefit

    Using multiple inheritance lets SmartPhone reuse code from Camera and Phone classes without rewriting.
  3. Final Answer:

    To combine camera and phone features without rewriting their code -> Option C
  4. Quick Check:

    Multiple inheritance = reuse multiple parents' features [OK]
Hint: Use multiple inheritance to reuse code from many classes [OK]
Common Mistakes:
  • Thinking it improves speed
  • Believing it removes need for methods
  • Assuming it forces method sharing