Bird
Raised Fist0
Pythonprogramming~20 mins

Multiple inheritance syntax in Python - Practice Problems & Coding Challenges

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!
Predict Output
intermediate
2:00remaining
Output of multiple inheritance method call

What is the output of this Python code using multiple inheritance?

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 A
BHello from B
CHello from C
DTypeError
Attempts:
2 left
💡 Hint

Remember Python uses method resolution order (MRO) and looks for methods in the first parent class listed.

Predict Output
intermediate
2:00remaining
Output when overriding method in multiple inheritance

What will this code print?

Python
class X:
    def action(self):
        return "Action from X"

class Y:
    def action(self):
        return "Action from Y"

class Z(X, Y):
    def action(self):
        return super().action()

obj = Z()
print(obj.action())
AAction from X
BAttributeError
CAction from Z
DAction from Y
Attempts:
2 left
💡 Hint

super() in class Z calls the next method in the MRO after Z.

Predict Output
advanced
2:00remaining
Output of diamond inheritance with super()

What is the output of this code involving diamond inheritance?

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

class Left(Base):
    def greet(self):
        return "Left says " + super().greet()

class Right(Base):
    def greet(self):
        return "Right says " + super().greet()

class Child(Left, Right):
    def greet(self):
        return "Child says " + super().greet()

obj = Child()
print(obj.greet())
AChild says Left says Hello from Base
BChild says Right says Left says Hello from Base
CChild says Left says Right says Hello from Base
DTypeError
Attempts:
2 left
💡 Hint

Check the method resolution order (MRO) for Child and how super() calls chain.

Predict Output
advanced
2:00remaining
Error raised by incorrect multiple inheritance syntax

What error does this code raise?

Python
class A:
    pass

class B:
    pass

class C(A, B):
    pass
ANo error
BTypeError
CNameError
DSyntaxError
Attempts:
2 left
💡 Hint

Check the syntax for listing multiple parent classes.

🧠 Conceptual
expert
2:00remaining
Order of classes in multiple inheritance affects method resolution

Given these classes, which option shows the correct method resolution order (MRO) for class D?

class A: pass
class B(A): pass
class C(A): pass
class D(B, C): pass
A[D, A, B, C, object]
B[D, B, C, A, object]
C[D, C, B, A, object]
D[D, B, A, C, object]
Attempts:
2 left
💡 Hint

Python uses C3 linearization for MRO. The order of parents in class D matters.

Practice

(1/5)
1. What is the correct way to declare a class Child that inherits from two parent classes Parent1 and Parent2 in Python?
easy
A. class Child(Parent1, Parent2):
B. class Child(Parent1 & Parent2):
C. class Child inherits Parent1, Parent2:
D. class Child: Parent1, Parent2

Solution

  1. Step 1: Understand Python class inheritance syntax

    In Python, to inherit from multiple classes, list them separated by commas inside parentheses after the class name.
  2. Step 2: Match the syntax to the options

    class Child(Parent1, Parent2): uses the correct syntax: class Child(Parent1, Parent2):. Other options use invalid syntax.
  3. Final Answer:

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

    Multiple inheritance syntax = class Child(Parent1, Parent2): [OK]
Hint: List parent classes separated by commas in parentheses [OK]
Common Mistakes:
  • Using '&' instead of commas between parent classes
  • Writing 'inherits' keyword like other languages
  • Not using parentheses after class name
2. Which of the following is a syntax error when defining a class with multiple inheritance?
easy
A. class MyClass(): pass
B. class MyClass(Parent1, Parent2): pass
C. class MyClass(Parent1): pass
D. class MyClass(Parent1 Parent2): pass

Solution

  1. Step 1: Check syntax for multiple inheritance

    Parent classes must be separated by commas inside parentheses.
  2. Step 2: Identify the incorrect option

    class MyClass(Parent1 Parent2): pass misses the comma between Parent1 and Parent2, causing a syntax error.
  3. Final Answer:

    class MyClass(Parent1 Parent2): pass -> Option D
  4. Quick Check:

    Missing comma between parents = SyntaxError [OK]
Hint: Always separate parent classes with commas [OK]
Common Mistakes:
  • Omitting commas between parent classes
  • Leaving out parentheses entirely
  • Using colons instead of commas
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. TypeError
C. AttributeError
D. "Hello from B"

Solution

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

    Class C inherits from A first, then B. Python looks for methods in the order of parents listed.
  2. Step 2: Determine which greet() 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 follows parent order = "Hello from A" [OK]
Hint: First parent class method is used in multiple inheritance [OK]
Common Mistakes:
  • Assuming last parent class method is called
  • Expecting an error due to multiple parents
  • Confusing method names or forgetting MRO
4. Find the error in this multiple inheritance code:
class X:
    pass

class Y:
    pass

class Z(X Y):
    pass
medium
A. Missing colon after class name
B. Missing comma between parent classes
C. Parent classes must be in square brackets
D. Class Z cannot inherit from X and Y

Solution

  1. Step 1: Check syntax for multiple inheritance

    Parent classes must be separated by commas inside parentheses.
  2. Step 2: Identify the syntax error

    In class Z(X Y):, the comma between X and Y is missing, causing a syntax error.
  3. Final Answer:

    Missing comma between parent classes -> Option B
  4. Quick Check:

    Comma missing between parents = SyntaxError [OK]
Hint: Separate parent classes with commas inside parentheses [OK]
Common Mistakes:
  • Forgetting commas between parent classes
  • Using square brackets instead of parentheses
  • Thinking multiple inheritance is not allowed
5. Given these classes:
class Alpha:
    def action(self):
        return "Alpha"

class Beta:
    def action(self):
        return "Beta"

class Gamma(Alpha, Beta):
    def action(self):
        return super().action() + " & Gamma"

class Delta(Gamma, Beta):
    pass

obj = Delta()
print(obj.action())

What is the output?
hard
A. "Beta & Gamma"
B. "Gamma"
C. "Alpha & Gamma"
D. AttributeError

Solution

  1. Step 1: Understand the inheritance chain and MRO

    Delta inherits from Gamma and Beta. Gamma inherits from Alpha and Beta. The MRO for Delta is Delta, Gamma, Alpha, Beta, object.
  2. Step 2: Trace the action() method call

    Delta uses Gamma's action(), which calls super().action(). In Gamma, super() refers to Alpha (next in MRO), so Alpha.action() returns "Alpha". Then Gamma appends " & Gamma".
  3. Final Answer:

    "Alpha & Gamma" -> Option C
  4. Quick Check:

    super() follows MRO = "Alpha & Gamma" [OK]
Hint: super() calls next in MRO, not just first parent [OK]
Common Mistakes:
  • Assuming super() calls Beta's method instead of Alpha's
  • Ignoring MRO order in multiple inheritance
  • Expecting an error due to complex inheritance