Bird
Raised Fist0
Pythonprogramming~10 mins

Method overriding 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 override the method greet in the subclass.

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

class Child(Parent):
    def greet(self):
        return [1]
Drag options to blanks, or click blank then click option'
Agreet()
Bsuper().greet()
C"Hello from Parent"
D"Hello from Child"
Attempts:
3 left
💡 Hint
Common Mistakes
Returning the parent's greet method call instead of a new string.
Calling greet() without self or super().
2fill in blank
medium

Complete the code to call the parent class method greet inside the overridden method.

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

class Child(Parent):
    def greet(self):
        return [1] + " and Child"
Drag options to blanks, or click blank then click option'
Asuper().greet()
B"Hello from Child"
CParent.greet()
Dself.greet()
Attempts:
3 left
💡 Hint
Common Mistakes
Calling self.greet() causes infinite recursion.
Calling Parent.greet() without passing self.
3fill in blank
hard

Fix the error in the overridden method to correctly call the parent class method.

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

class Child(Parent):
    def greet(self):
        return Parent.greet([1]) + " and Child"
Drag options to blanks, or click blank then click option'
Aself
BChild
Csuper()
Dcls
Attempts:
3 left
💡 Hint
Common Mistakes
Passing the class name instead of the instance.
Using super() inside a direct class method call.
4fill in blank
hard

Fill both blanks to override describe method and call the parent method inside it.

Python
class Animal:
    def describe(self):
        return "I am an animal"

class Dog(Animal):
    def describe(self):
        return [1] + ", and I am a dog"

obj = Dog()
print(obj.describe())
Drag options to blanks, or click blank then click option'
Asuper().describe()
BAnimal.describe(self)
C"I am an animal"
Dself.describe()
Attempts:
3 left
💡 Hint
Common Mistakes
Calling self.describe() causes infinite recursion.
Returning only the dog's string without calling parent.
5fill in blank
hard

Fill all three blanks to override info method, call parent method, and add extra info.

Python
class Vehicle:
    def info(self):
        return "Vehicle info"

class Car(Vehicle):
    def info(self):
        return [1] + ", model: " + [2] + ", year: " + [3]

car = Car()
print(car.info())
Drag options to blanks, or click blank then click option'
Asuper().info()
B"Model X"
C"2024"
Dself.info()
Attempts:
3 left
💡 Hint
Common Mistakes
Calling self.info() causes infinite recursion.
Not calling the parent method at all.

Practice

(1/5)
1. What does method overriding allow a child class to do in Python?
easy
A. Prevent the parent class method from being used anywhere
B. Create a new method with a different name
C. Change the behavior of a method inherited from the parent class
D. Automatically call the parent class method without code

Solution

  1. Step 1: Understand method overriding concept

    Method overriding means the child class provides its own version of a method that exists in the parent class.
  2. Step 2: Identify what overriding changes

    The child class method replaces the parent's method behavior when called on the child instance.
  3. Final Answer:

    Change the behavior of a method inherited from the parent class -> Option C
  4. Quick Check:

    Method overriding = change inherited method behavior [OK]
Hint: Overriding means child changes parent's method behavior [OK]
Common Mistakes:
  • Thinking overriding creates a new method with a different name
  • Believing overriding disables parent method everywhere
  • Assuming parent method is called automatically without super()
2. Which of the following is the correct way to override a method named greet in a child class?
easy
A. def greet(self, extra):\n print('Hello from child')
B. def greet(self):\n print('Hello from child')
C. def greet_child(self):\n print('Hello from child')
D. def greet():\n print('Hello from child')

Solution

  1. Step 1: Match method name exactly

    Overriding requires the child method to have the same name as the parent method, here 'greet'.
  2. Step 2: Check method signature

    The method must include 'self' as the first parameter to be a proper instance method.
  3. Final Answer:

    def greet(self):\n print('Hello from child') -> Option B
  4. Quick Check:

    Same name and self parameter = correct override [OK]
Hint: Override by matching method name and self parameter [OK]
Common Mistakes:
  • Changing method name instead of overriding
  • Omitting self parameter in method definition
  • Adding extra parameters that don't match parent method
3. What will be the output of this code?
class Parent:
    def greet(self):
        print('Hello from Parent')

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

obj = Child()
obj.greet()
medium
A. Hello from Parent
B. Error: greet method not found
C. Hello from Parent\nHello from Child
D. Hello from Child

Solution

  1. Step 1: Identify method overriding

    The Child class defines its own greet method, overriding Parent's greet.
  2. Step 2: Determine which method is called

    Calling obj.greet() on a Child instance calls the Child's greet method, printing 'Hello from Child'.
  3. Final Answer:

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

    Child method overrides Parent method = 'Hello from Child' [OK]
Hint: Child method runs when overridden, not parent's [OK]
Common Mistakes:
  • Expecting both parent and child messages to print
  • Thinking parent method runs instead of child
  • Assuming error due to method name conflict
4. Find the error in this code that tries to override a method:
class Parent:
    def show(self):
        print('Parent show')

class Child(Parent):
    def show():
        print('Child show')

obj = Child()
obj.show()
medium
A. Missing self parameter in Child's show method
B. Parent class method show is private
C. Child class should not override show method
D. obj.show() should be called as Child.show(obj)

Solution

  1. Step 1: Check method signature in Child class

    The Child's show method is missing the 'self' parameter, so it is not a proper instance method.
  2. Step 2: Understand impact of missing self

    Calling obj.show() will cause a TypeError because Python expects the first argument (self) but none is defined.
  3. Final Answer:

    Missing self parameter in Child's show method -> Option A
  4. Quick Check:

    Instance methods must have self parameter [OK]
Hint: Instance methods always need self as first parameter [OK]
Common Mistakes:
  • Ignoring missing self parameter
  • Thinking method overriding is not allowed
  • Believing calling method differently fixes error
5. Given this code, what will be the output?
class Parent:
    def greet(self):
        print('Hello from Parent')

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

obj = Child()
obj.greet()
hard
A. Hello from Parent\nHello from Child
B. Hello from Child
C. Hello from Parent
D. Error: super() used incorrectly

Solution

  1. Step 1: Understand super() call in Child's greet

    The Child's greet method calls super().greet(), which runs the Parent's greet method first.
  2. Step 2: Follow the print statements

    First, 'Hello from Parent' is printed, then 'Hello from Child' is printed after.
  3. Final Answer:

    Hello from Parent\nHello from Child -> Option A
  4. Quick Check:

    super() calls parent method before child code [OK]
Hint: super() runs parent method before child code [OK]
Common Mistakes:
  • Expecting only child's message to print
  • Thinking super() causes error without arguments
  • Ignoring order of print statements