Bird
Raised Fist0
Pythonprogramming~10 mins

Extending parent behavior in Python - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to call the parent class method inside the child class.

Python
class Parent:
    def greet(self):
        print("Hello from Parent")

class Child(Parent):
    def greet(self):
        [1]
Drag options to blanks, or click blank then click option'
Aself.greet()
BParent.greet(self)
Csuper().greet()
Dgreet()
Attempts:
3 left
💡 Hint
Common Mistakes
Calling self.greet() causes infinite recursion.
Calling Parent.greet() without self argument causes error.
Calling greet() alone is undefined.
2fill in blank
medium

Complete the code to extend the parent method by adding extra behavior in the child class.

Python
class Parent:
    def show(self):
        print("Parent show")

class Child(Parent):
    def show(self):
        [1]
        print("Child show")
Drag options to blanks, or click blank then click option'
Aself.show()
BParent.show(self)
Cshow()
Dsuper().show()
Attempts:
3 left
💡 Hint
Common Mistakes
Calling self.show() causes infinite recursion.
Calling Parent.show(self) works but is less flexible.
Calling show() alone causes error.
3fill in blank
hard

Fix the error in the child class method to properly extend the parent method.

Python
class Parent:
    def info(self):
        print("Info from Parent")

class Child(Parent):
    def info(self):
        [1]
        print("Info from Child")

c = Child()
c.info()
Drag options to blanks, or click blank then click option'
Asuper().info()
Binfo()
CParent.info(self)
Dself.info()
Attempts:
3 left
💡 Hint
Common Mistakes
Calling self.info() causes infinite recursion.
Calling Parent.info() without self argument causes error.
Calling info() alone is undefined.
4fill in blank
hard

Fill both blanks to extend the parent method and add a new message in the child class.

Python
class Animal:
    def speak(self):
        print("Animal speaks")

class Dog(Animal):
    def speak(self):
        [1]
        print([2])
Drag options to blanks, or click blank then click option'
Asuper().speak()
B"Dog barks"
C"Dog says woof"
DAnimal.speak(self)
Attempts:
3 left
💡 Hint
Common Mistakes
Using Animal.speak(self) works but is less flexible than super().speak().
Printing the wrong message confuses output.
Not calling the parent method misses inherited behavior.
5fill in blank
hard

Fill all three blanks to extend the parent method, add a new message, and call another parent method.

Python
class Vehicle:
    def start(self):
        print("Vehicle started")
    def stop(self):
        print("Vehicle stopped")

class Car(Vehicle):
    def start(self):
        [1]
        print([2])
        [3]
Drag options to blanks, or click blank then click option'
Asuper().start()
B"Car engine running"
Csuper().stop()
DVehicle.start(self)
Attempts:
3 left
💡 Hint
Common Mistakes
Calling Vehicle.start(self) works but is less flexible than super().start().
Not calling super().stop() misses stopping behavior.
Printing wrong message confuses output.

Practice

(1/5)
1. What does super() do in a child class method?
easy
A. It overrides the child class method completely.
B. It calls the parent class method to reuse its behavior.
C. It deletes the parent class method.
D. It creates a new instance of the child class.

Solution

  1. Step 1: Understand the role of super()

    super() is used to call a method from the parent class inside a child class method.
  2. Step 2: Recognize code reuse

    By calling the parent method, the child can reuse existing behavior and add new features without rewriting code.
  3. Final Answer:

    It calls the parent class method to reuse its behavior. -> Option B
  4. Quick Check:

    super() calls parent method = D [OK]
Hint: Remember: super() runs parent method inside child [OK]
Common Mistakes:
  • Thinking super() creates new instances
  • Believing super() deletes methods
  • Assuming super() overrides without calling parent
2. Which of the following is the correct syntax to call a parent class method greet inside a child class method in Python?
easy
A. super().greet()
B. super.greet()
C. parent.greet()
D. self.super.greet()

Solution

  1. Step 1: Recall correct super() syntax

    In Python, super() is a function and must be called with parentheses before accessing methods.
  2. Step 2: Identify correct method call

    The correct way to call the parent method is super().greet(), not super.greet() or others.
  3. Final Answer:

    super().greet() -> Option A
  4. Quick Check:

    super() needs parentheses = A [OK]
Hint: Use parentheses with super() to call parent methods [OK]
Common Mistakes:
  • Omitting parentheses after super
  • Using parent instead of super
  • Trying to access super as an attribute
3. What will be the output of this code?
class Parent:
    def greet(self):
        print('Hello from Parent')

class Child(Parent):
    def greet(self):
        super().greet()
        print('Hello from Child')

c = Child()
c.greet()
medium
A. Hello from Child
B. Error: super() not defined
C. Hello from Parent
D. Hello from Parent Hello from Child

Solution

  1. Step 1: Trace the child greet() method

    The child method calls super().greet() first, which prints 'Hello from Parent'.
  2. Step 2: Continue child method execution

    After calling the parent method, it prints 'Hello from Child'. So both lines print in order.
  3. Final Answer:

    Hello from Parent Hello from Child -> Option D
  4. Quick Check:

    super() calls parent then child prints = B [OK]
Hint: super() runs parent code first, then child adds more [OK]
Common Mistakes:
  • Ignoring the parent print
  • Expecting only child output
  • Thinking super() causes error
4. Find the error in this code that tries to extend the parent method:
class Parent:
    def show(self):
        print('Parent show')

class Child(Parent):
    def show(self):
        super.show()
        print('Child show')
medium
A. super.show() should be super().show()
B. Child class must not override show()
C. Parent class method show() is missing self
D. print statements must be inside __init__

Solution

  1. Step 1: Check super() usage

    The code uses super.show() which is incorrect syntax; super() must be called as a function.
  2. Step 2: Correct the syntax

    It should be super().show() to properly call the parent method.
  3. Final Answer:

    super.show() should be super().show() -> Option A
  4. Quick Check:

    super() needs parentheses to call methods = A [OK]
Hint: Always use super() with parentheses to call parent methods [OK]
Common Mistakes:
  • Forgetting parentheses after super
  • Thinking parent method needs no self
  • Believing print must be in __init__
5. You want to extend a parent class method calculate so that the child class adds 10 to the parent's result. Which code correctly does this?
class Parent:
    def calculate(self):
        return 5

class Child(Parent):
    def calculate(self):
        # Fill here
hard
A. return Parent.calculate() + 10
B. return calculate() + 10
C. return super().calculate() + 10
D. return self.calculate() + 10

Solution

  1. Step 1: Use super() to call parent method

    To get the parent's result, call super().calculate() inside the child method.
  2. Step 2: Add 10 to the parent's result

    Return the parent's value plus 10 as super().calculate() + 10.
  3. Final Answer:

    return super().calculate() + 10 -> Option C
  4. Quick Check:

    super() calls parent, add 10 = C [OK]
Hint: Use return super().method() + extra to extend result [OK]
Common Mistakes:
  • Calling calculate() without super causes recursion
  • Calling Parent.calculate() without instance
  • Using self.calculate() causes infinite loop