Remember
Different objects can support the same operation. A caller can use that shared operation without checking each object’s concrete class.
Different objects can support the same operation. A caller can use that shared operation without checking each object’s concrete class.
Follow the example, change its sample, and compare what happens.
Explain the result and test your understanding.
Focus on how the names, objects, and calculations change. We’ll inspect the printed output in the next section.
Follow the code and watch its state change. Guided simulation.
class Bell:
def sound(self):
return "ring"
class Drum:
def sound(self):
return "boom"
instrument = Bell()
print(instrument.sound())Top-level scope
class BellObject 4 · typeclass DrumObject 5 · BellBell({})Different objects can support the same operation. A caller can use that shared operation without checking each object’s concrete class.
(no output)
What do you expect this program to print?
EXAMPLE INSTRUCTIONS
class Bell:
def sound(self):
return "ring"
class Drum:
def sound(self):
return "boom"
instrument = Bell()
print(instrument.sound())
|
v
DISPLAYED RESULT
ring
FINAL BINDINGS
Bell --> object 2 (type)
Drum --> object 4 (type)
instrument --> object 5 (Bell)
object 2: class Bell
object 4: class Drum
object 5: Bell({})Choose a different sample input, then follow every step through to the output. Before revealing it, predict what the program will display.
Choose a sample and follow its execution. Guided simulation.
class Bell:
def sound(self):
return "ring"
class Drum:
def sound(self):
return "boom"
instrument = Bell()
print(instrument.sound())Top-level scope
class BellObject 4 · typeclass DrumObject 5 · BellBell({})The example has finished. Compare the final output with the values and references above.
ring
What do you expect this program to print?
class Bell:
def sound(self):
return "ring"
class Drum:
def sound(self):
return "boom"
instrument = Bell()
print(instrument.sound())Polymorphism means “many forms.”
It’s a concept where something (like a function or method) behaves differently based on the object it is working with.
Imagine this: A person can be a student, a player, and a singer. Same person — but different roles. That’s the idea behind polymorphism.
Python has a built-in function len() that gives you the length of something.
print(len("hello")) # Length of a string
print(len([1, 2, 3, 4])) # Length of a list
print(len((10, 20))) # Length of a tuple
5
4
2
"hello" has 5 letters → len("hello") is 5[1, 2, 3, 4] has 4 items → len([1, 2, 3, 4]) is 4(10, 20) has 2 items → len((10, 20)) is 2The same function (len()) gives correct results for different types — that’s polymorphism!
Let’s look at how polymorphism works with objects from different classes.
class Dog:
def speak(self):
return "Woof!"
class Cat:
def speak(self):
return "Meow!"
# Using polymorphism
animals = [Dog(), Cat()]
for animal in animals:
print(animal.speak())
Woof!
Meow!
Dog and Cat have a method called speak().animal.speak(), Python knows which version to use based on the object.Dog says Woof! and Cat says Meow!.This is polymorphism — speak() behaves differently for different objects.
Here are some fun examples:
Polymorphism allows the same action to work differently depending on the object.
Connect what you noticed in the example with the idea below.
Different objects can support the same operation. A caller can use that shared operation without checking each object’s concrete class.
Objects must have the same class to support the same operation.
This is the misconception to avoid.Reaching the recap and completing the quizzes are separate milestones.