What if you could write one simple code that works for many different things, each doing its own magic?
Why Polymorphism through inheritance in Python? - Purpose & Use Cases
Start learning this pattern below
Jump into concepts and practice - no test required
Imagine you have different types of animals, and you want each to make its own sound. If you write separate code for each animal's sound, it becomes messy and hard to manage.
Writing separate code for each animal means repeating yourself a lot. If you add a new animal, you must change many parts of your program. This is slow and easy to break.
Polymorphism through inheritance lets you write one general code for animals, and each animal can have its own way to make a sound. This keeps your code clean and easy to extend.
def dog_sound(): print('Woof') def cat_sound(): print('Meow') dog_sound() cat_sound()
class Animal: def sound(self): pass class Dog(Animal): def sound(self): print('Woof') class Cat(Animal): def sound(self): print('Meow') for animal in [Dog(), Cat()]: animal.sound()
This concept allows you to treat different objects in the same way while letting each behave uniquely.
Think of a music app where different instruments play sounds. Polymorphism lets the app call 'play' on any instrument without knowing its type.
Manual code repeats and is hard to maintain.
Inheritance groups common behavior in one place.
Polymorphism lets different objects respond uniquely to the same action.
Practice
Solution
Step 1: Understand polymorphism concept
Polymorphism means one method name can behave differently depending on the class.Step 2: Relate to inheritance
Child classes override the method to provide their own behavior.Final Answer:
One method name to have different behaviors in child classes -> Option AQuick Check:
Polymorphism = One method, many behaviors [OK]
- Confusing polymorphism with multiple inheritance
- Thinking polymorphism means same variable names
- Believing objects can exist without classes
Solution
Step 1: Check method overriding syntax
In Python, overriding means defining a method with the same name in the child class.Step 2: Verify other options
Python does not useoverridekeyword; renaming is not overriding; calling parent method alone is not overriding.Final Answer:
Define a method with the same name in the child class -> Option CQuick Check:
Override = same method name in child [OK]
- Using a non-existent
overridekeyword - Thinking calling parent method equals overriding
- Renaming method instead of overriding
class Animal:
def sound(self):
return "Some sound"
class Dog(Animal):
def sound(self):
return "Bark"
class Cat(Animal):
def sound(self):
return "Meow"
animals = [Dog(), Cat(), Animal()]
for a in animals:
print(a.sound())Solution
Step 1: Identify method overriding
Dog and Cat classes overridesoundmethod to return "Bark" and "Meow" respectively.Step 2: Trace the loop output
Loop callssound()on Dog(), Cat(), and Animal() objects, printing "Bark", "Meow", and "Some sound".Final Answer:
Bark Meow Some sound -> Option AQuick Check:
Overridden methods print their own sounds [OK]
- Assuming parent method always runs
- Expecting errors from calling base class method
- Mixing output order
class Vehicle:
def move(self):
print("Moving")
class Car(Vehicle):
def move(self):
print("Driving")
class Bike(Vehicle):
def move(self):
print("Riding")
vehicles = [Car(), Bike()]
for v in vehicles:
v.moveSolution
Step 1: Check method calls in loop
The code usesv.movewithout parentheses, so method is not called.Step 2: Understand effect of missing parentheses
Without parentheses, method object is referenced but not executed, so no output occurs.Final Answer:
Missing parentheses when callingmovemethod -> Option DQuick Check:
Method call needs () to execute [OK]
- Forgetting parentheses on method calls
- Thinking print vs return causes error here
- Believing inheritance syntax is wrong
Bird that also uses polymorphism with sound(). Which code correctly extends the existing classes and uses polymorphism?Solution
Step 1: Check inheritance and method name
Bird must inherit from Animal and overridesound()method to maintain polymorphism.Step 2: Verify method behavior and usage
Method returns string "Chirp" like others; appending Bird() to animals list and callingsound()works correctly.Final Answer:
Correctly inherits Animal and overrides sound() returning "Chirp" -> Option BQuick Check:
Polymorphism needs same method name and inheritance [OK]
- Not inheriting from Animal class
- Using different method name like noise()
- Printing inside method instead of returning
