Bird
0
0

Given classes:

hard📝 Application Q9 of 15
Python - Polymorphism and Dynamic Behavior
Given classes:
class Writer:
    def write(self):
        return "Writing"

class Poet(Writer):
    def write(self):
        return "Writing poems"

class Novelist(Writer):
    def write(self):
        return "Writing novels"

people = [Poet(), Novelist(), Writer()]
for person in people:
    print(person.write())

What is the output?
AError due to method name conflict
BWriting Writing Writing
CWriting poems Writing novels Writing
DWriting poems Writing Writing novels
Step-by-Step Solution
Solution:
  1. Step 1: Identify method calls per object

    Poet.write() returns "Writing poems", Novelist.write() returns "Writing novels", Writer.write() returns "Writing".
  2. Step 2: Understand loop output

    Loop prints each object's write() result in order.
  3. Final Answer:

    Writing poems\nWriting novels\nWriting -> Option C
  4. Quick Check:

    Polymorphism calls correct method per object [OK]
Quick Trick: Loop calls overridden methods per object type [OK]
Common Mistakes:
  • Assuming base method always called
  • Mixing output order
  • Expecting error from method names

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More Python Quizzes