Bird
Raised Fist0
Pythonprogramming~20 mins

Method overriding behavior in Python - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Method Overriding Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of method overriding with super()
What is the output of this Python code?
Python
class Parent:
    def greet(self):
        return "Hello from Parent"

class Child(Parent):
    def greet(self):
        return super().greet() + " and Child"

obj = Child()
print(obj.greet())
ATypeError
BHello from Parent
Cand Child
DHello from Parent and Child
Attempts:
2 left
💡 Hint
Think about how super() calls the parent method and how the returned string is combined.
Predict Output
intermediate
2:00remaining
Output when overriding without calling super()
What will this code print?
Python
class Base:
    def message(self):
        return "Base message"

class Derived(Base):
    def message(self):
        return "Derived message"

obj = Derived()
print(obj.message())
AAttributeError
BDerived message
CNone
DBase message
Attempts:
2 left
💡 Hint
The Derived class replaces the Base method without calling it.
Predict Output
advanced
2:30remaining
Output with multiple inheritance and method overriding
What is the output of this code?
Python
class A:
    def speak(self):
        return "A speaks"

class B(A):
    def speak(self):
        return "B speaks"

class C(A):
    def speak(self):
        return "C speaks"

class D(B, C):
    pass

obj = D()
print(obj.speak())
AB speaks
BA speaks
CC speaks
DTypeError
Attempts:
2 left
💡 Hint
Check the method resolution order (MRO) for class D.
Predict Output
advanced
2:00remaining
Output when overriding a method and changing return type
What will this code print?
Python
class Parent:
    def get_value(self):
        return 10

class Child(Parent):
    def get_value(self):
        return "Ten"

obj = Child()
print(obj.get_value())
ATen
BTypeError
C10
DAttributeError
Attempts:
2 left
💡 Hint
The Child method returns a string instead of an integer.
Predict Output
expert
2:30remaining
Output with method overriding and attribute access
What is the output of this code?
Python
class Parent:
    def __init__(self):
        self.value = 5
    def get_value(self):
        return self.value

class Child(Parent):
    def __init__(self):
        self.value = 10
    def get_value(self):
        return super().get_value() + 5

obj = Child()
print(obj.get_value())
A10
B5
C15
DAttributeError
Attempts:
2 left
💡 Hint
Consider which __init__ method runs and what self.value is when super().get_value() is called.

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