Bird
Raised Fist0
Pythonprogramming~10 mins

Parent and child classes in Python - Step-by-Step Execution

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
Concept Flow - Parent and child classes
Define Parent Class
Define Child Class inherits Parent
Create Child Object
Call Child Method
If method not in Child
Yes
Use Parent Method
End
This flow shows how a child class inherits from a parent class and uses its methods if not overridden.
Execution Sample
Python
class Parent:
    def greet(self):
        return "Hello from Parent"

class Child(Parent):
    pass

c = Child()
print(c.greet())
This code defines a parent class with a method and a child class that inherits it, then calls the inherited method.
Execution Table
StepActionEvaluationResult
1Define class ParentParent class createdParent class ready
2Define method greet in ParentMethod greet addedParent.greet() available
3Define class Child inheriting ParentChild class createdChild inherits Parent
4Create object c of Childc is instance of Childc created
5Call c.greet()Method lookup in ChildNot found in Child
6Lookup method in ParentMethod greet foundUse Parent.greet()
7Execute Parent.greet()Return string"Hello from Parent"
8Print outputOutput to consoleHello from Parent
💡 Method found in Parent, output printed, program ends
Variable Tracker
VariableStartAfter Step 4After Step 7Final
cundefinedChild instanceunchangedunchanged
Key Moments - 2 Insights
Why does c.greet() work even though Child class has no greet method?
Because the method is found in the Parent class during lookup (see execution_table step 6). Child inherits Parent's methods.
What happens if Child defines its own greet method?
The Child's greet method will be used instead of Parent's (method lookup stops at Child). This is called overriding.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, at which step is the method greet found in the Parent class?
AStep 7
BStep 5
CStep 6
DStep 4
💡 Hint
Check the 'Evaluation' column for method lookup results in execution_table.
According to variable_tracker, what is the value of variable c after step 4?
Aundefined
BChild instance
CParent instance
DNone
💡 Hint
Look at variable_tracker row for c after step 4.
If we add a greet method to Child class, what changes in the execution_table?
AMethod lookup finds greet in Child at step 5
BMethod lookup still finds greet in Parent at step 6
CObject c becomes Parent instance
DOutput changes to an error
💡 Hint
Think about method overriding and lookup order in execution_table steps 5 and 6.
Concept Snapshot
Parent and child classes:
- Define Parent class with methods.
- Child class inherits Parent using class Child(Parent).
- Child objects can use Parent methods if not overridden.
- Method lookup checks Child first, then Parent.
- Overriding allows Child to replace Parent methods.
Full Transcript
This example shows how a child class inherits from a parent class in Python. First, the Parent class is defined with a greet method. Then, the Child class is defined to inherit from Parent but does not add any methods. When we create an object c of Child and call c.greet(), Python looks for greet in Child. It is not found there, so it looks in Parent and finds it. The greet method from Parent runs and returns the string 'Hello from Parent', which is printed. This shows inheritance where the child class uses the parent's methods if it does not have its own version. If Child had its own greet method, that would be used instead, demonstrating method overriding.

Practice

(1/5)
1. What is the main purpose of a parent class in Python?
easy
A. To hold common features that child classes can inherit
B. To override methods in child classes
C. To create instances directly without child classes
D. To prevent child classes from adding new features

Solution

  1. Step 1: Understand the role of parent class

    A parent class is designed to hold common features like methods and attributes that multiple child classes can share.
  2. Step 2: Compare options with this role

    To hold common features that child classes can inherit correctly states this purpose. Other options describe incorrect or unrelated roles.
  3. Final Answer:

    To hold common features that child classes can inherit -> Option A
  4. Quick Check:

    Parent class = common features [OK]
Hint: Parent class shares features for children to reuse [OK]
Common Mistakes:
  • Thinking parent classes prevent changes in children
  • Believing parent classes are only for direct instances
  • Confusing overriding with inheritance
2. Which of the following is the correct syntax to define a child class Dog that inherits from a parent class Animal?
easy
A. class Dog extends Animal:
B. class Dog inherits Animal:
C. class Dog < Animal:
D. class Dog(Animal):

Solution

  1. Step 1: Recall Python inheritance syntax

    In Python, a child class inherits from a parent class by placing the parent class name in parentheses after the child class name.
  2. Step 2: Match options with correct syntax

    class Dog(Animal): uses class Dog(Animal): which is correct. Other options use incorrect keywords or symbols not valid in Python.
  3. Final Answer:

    class Dog(Animal): -> Option D
  4. Quick Check:

    Child class syntax = class Child(Parent): [OK]
Hint: Use parentheses with parent class name after child class [OK]
Common Mistakes:
  • Using 'inherits' or 'extends' keywords (not Python)
  • Using symbols like '<' instead of parentheses
  • Omitting the colon at the end
3. What will be the output of this code?
class Parent:
    def greet(self):
        return "Hello from Parent"

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

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

Solution

  1. Step 1: Understand method overriding in child class

    The child class Child defines its own greet method, which replaces the parent's method when called on a child instance.
  2. Step 2: Check which method is called

    Since obj is an instance of Child, calling obj.greet() uses the child's method, returning "Hello from Child".
  3. Final Answer:

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

    Child method overrides parent method = Hello from Child [OK]
Hint: Child method overrides parent method when called on child [OK]
Common Mistakes:
  • Thinking parent method runs instead of child's
  • Expecting combined output from both methods
  • Assuming method not found error
4. Find the error in this code:
class Parent:
    def __init__(self, name):
        self.name = name

class Child(Parent):
    def __init__(self, name, age):
        self.age = age

c = Child('Anna', 10)
print(c.name, c.age)
medium
A. Child class __init__ does not call Parent __init__, so name is missing
B. Syntax error in class definition
C. Cannot create Child instance with two arguments
D. print statement syntax is wrong

Solution

  1. Step 1: Check constructor chaining in child class

    The child class __init__ method sets age but does not call super().__init__(name) to set name from the parent.
  2. Step 2: Understand consequence of missing super call

    Because name is not set in Child, accessing c.name will cause an error or missing attribute.
  3. Final Answer:

    Child class __init__ does not call Parent __init__, so name is missing -> Option A
  4. Quick Check:

    Missing super() call = missing parent attributes [OK]
Hint: Always call super().__init__ in child __init__ to set parent attributes [OK]
Common Mistakes:
  • Forgetting to call super().__init__ in child constructor
  • Assuming parent attributes set automatically
  • Confusing syntax errors with logic errors
5. Given these classes, what will print(c.describe()) output?
class Parent:
    def describe(self):
        return "I am a parent"

class Child(Parent):
    def describe(self):
        parent_desc = super().describe()
        return parent_desc + " and I am a child"

c = Child()
hard
A. I am a parent
B. I am a parent and I am a child
C. I am a child
D. Error: super() used incorrectly

Solution

  1. Step 1: Understand super() usage in child describe method

    The child method calls super().describe() which runs the parent method returning "I am a parent".
  2. Step 2: Combine parent and child strings

    The child method adds " and I am a child" to the parent's string, so the full return is "I am a parent and I am a child".
  3. Final Answer:

    I am a parent and I am a child -> Option B
  4. Quick Check:

    super() calls parent method, combined output [OK]
Hint: Use super() to add parent behavior inside child method [OK]
Common Mistakes:
  • Expecting only child or only parent output
  • Thinking super() causes error without arguments
  • Ignoring string concatenation