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
Multiple Inheritance Syntax in Python
📖 Scenario: Imagine you are creating a simple program to model a vehicle that can both fly and float on water. You want to combine features from two different classes: one for flying and one for floating.
🎯 Goal: You will create two base classes, then create a new class that inherits from both using multiple inheritance syntax. Finally, you will create an object of the new class and print its abilities.
📋 What You'll Learn
Create two base classes named Flyer and Floater.
Each base class should have one method: fly() in Flyer and float() in Floater.
Create a new class named FlyingBoat that inherits from both Flyer and Floater using multiple inheritance syntax.
Create an object of FlyingBoat and call both fly() and float() methods.
Print the outputs of both method calls.
💡 Why This Matters
🌍 Real World
Multiple inheritance helps model objects that share features from different categories, like a flying boat that can both fly and float.
💼 Career
Understanding multiple inheritance is useful in software design to create flexible and reusable code by combining behaviors from multiple classes.
Progress0 / 4 steps
1
Create the base classes
Create two classes named Flyer and Floater. In Flyer, define a method fly() that returns the string "I can fly!". In Floater, define a method float() that returns the string "I can float!".
Python
Hint
Remember to use def to create methods inside classes and return the exact strings.
2
Create the FlyingBoat class with multiple inheritance
Create a class named FlyingBoat that inherits from both Flyer and Floater using multiple inheritance syntax.
Python
Hint
Use parentheses after the class name to list both parent classes separated by a comma.
3
Create an object of FlyingBoat and call methods
Create an object named fb of class FlyingBoat. Call the fly() method on fb and store the result in a variable named fly_result. Call the float() method on fb and store the result in a variable named float_result.
Python
Hint
Create the object by calling the class name with parentheses. Use dot notation to call methods.
4
Print the results
Print the variables fly_result and float_result each on its own line.
Python
Hint
Use two print statements, one for each variable.
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
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.
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.
Final Answer:
class Child(Parent1, Parent2): -> Option A
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
Step 1: Check syntax for multiple inheritance
Parent classes must be separated by commas inside parentheses.
Step 2: Identify the incorrect option
class MyClass(Parent1 Parent2): pass misses the comma between Parent1 and Parent2, causing a syntax error.
Final Answer:
class MyClass(Parent1 Parent2): pass -> Option D
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
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.
Step 2: Determine which greet() is called
Since A is first, C uses A's greet method, returning "Hello from A".
Final Answer:
"Hello from A" -> Option A
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
Step 1: Check syntax for multiple inheritance
Parent classes must be separated by commas inside parentheses.
Step 2: Identify the syntax error
In class Z(X Y):, the comma between X and Y is missing, causing a syntax error.
Final Answer:
Missing comma between parent classes -> Option B
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
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.
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".
Final Answer:
"Alpha & Gamma" -> Option C
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