Method overriding lets a child class change how a method from its parent works. This helps customize behavior without changing the original code.
Method overriding in Python
Start learning this pattern below
Jump into concepts and practice - no test required
class Parent: def method(self): # original behavior pass class Child(Parent): def method(self): # new behavior overriding parent method pass
The child class uses the same method name to replace the parent's method.
You can still call the parent method inside the child method using super() if needed.
Dog class changes the sound method to print "Bark" instead of "Some sound".class Animal: def sound(self): print("Some sound") class Dog(Animal): def sound(self): print("Bark")
Car class overrides move to show a specific message.class Vehicle: def move(self): print("Moving") class Car(Vehicle): def move(self): print("Car is driving")
class Parent: def greet(self): print("Hello from Parent") class Child(Parent): def greet(self): super().greet() print("Hello from Child")
This program shows method overriding. The Penguin class changes the fly method to say penguins can't fly, even though the parent Bird class says "Flying in the sky".
class Bird: def fly(self): print("Flying in the sky") class Penguin(Bird): def fly(self): print("Penguins can't fly") bird = Bird() bird.fly() penguin = Penguin() penguin.fly()
Method overriding only works if the method names are exactly the same.
Use super() to call the parent method if you want to keep its behavior and add more.
Overriding helps make your code flexible and easier to change later.
Method overriding lets a child class change a parent's method behavior.
Use the same method name in the child class to override.
It helps customize and extend code without rewriting everything.
Practice
What is method overriding in Python?
Choose the best description.
Solution
Step 1: Understand method overriding concept
Method overriding means a child class changes a method from its parent by defining a method with the same name.Step 2: Match description to concept
A child class provides a new version of a method from its parent class. correctly describes this behavior, while others describe different concepts.Final Answer:
A child class provides a new version of a method from its parent class. -> Option AQuick Check:
Method overriding = child changes parent method [OK]
- Confusing overriding with overloading
- Thinking overriding means creating a new method
- Believing methods cannot be changed in child classes
Which of the following is the correct way to override a method greet in a child class?
class Parent:
def greet(self):
print("Hello from Parent")
class Child(Parent):
# What goes here?
Solution
Step 1: Check method signature for overriding
The child method must have the same name and parameters as the parent method to override it properly.Step 2: Compare options
def greet(self): print("Hello from Child") matches the parent's method signature exactly. def greet(): print("Hello from Child") misses 'self', C adds a parameter, and D returns a string instead of printing.Final Answer:
def greet(self):\n print("Hello from Child") -> Option BQuick Check:
Same method name and parameters = correct override [OK]
- Omitting 'self' parameter in method
- Changing method parameters when overriding
- Returning value instead of matching parent's behavior
What will be the output of the following code?
class Animal:
def sound(self):
print("Some sound")
class Dog(Animal):
def sound(self):
print("Bark")
pet = Dog()
pet.sound()Solution
Step 1: Identify method overriding in Dog class
Dog class overrides the sound() method from Animal to print "Bark" instead of "Some sound".Step 2: Check which method is called
When pet.sound() is called, it uses Dog's version, printing "Bark".Final Answer:
Bark -> Option DQuick Check:
Child method called = overridden output [OK]
- Expecting parent method output instead of child's
- Thinking method call causes error
- Confusing print output with return value
Find the error in this code that tries to override a method:
class Vehicle:
def start(self):
print("Vehicle started")
class Car(Vehicle):
def start():
print("Car started")
c = Car()
c.start()Solution
Step 1: Check method signature in child class
Car's start method is missing the 'self' parameter, which is required for instance methods.Step 2: Understand impact of missing 'self'
Without 'self', Python treats start as a static method, causing a TypeError when called on an instance.Final Answer:
Missing 'self' parameter in Car's start method -> Option AQuick Check:
Instance methods need 'self' parameter [OK]
- Forgetting 'self' in child method
- Thinking inheritance causes error
- Misunderstanding method call syntax
Given the classes below, what will be the output when c.describe() is called?
class Parent:
def describe(self):
print("Parent description")
class Child(Parent):
def describe(self):
print("Child description")
super().describe()
c = Child()
c.describe()Solution
Step 1: Understand method overriding with super()
Child's describe() overrides Parent's but calls super().describe() to run parent's method too.Step 2: Trace method calls
Calling c.describe() prints "Child description" first, then calls Parent's describe() printing "Parent description".Final Answer:
Child description\nParent description -> Option CQuick Check:
super() calls parent method after child override [OK]
- Expecting only child's print output
- Thinking super() causes error
- Confusing order of prints
