Bird
Raised Fist0
Pythonprogramming~10 mins

Parent and child classes 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 define a child class that inherits from the parent class.

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

class Child([1]):
    pass
Drag options to blanks, or click blank then click option'
Aobject
BParent
CChild
Dself
Attempts:
3 left
💡 Hint
Common Mistakes
Using the child class name instead of the parent class name in inheritance.
Forgetting to put parentheses after the child class name.
2fill in blank
medium

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

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

class Child(Parent):
    def greet(self):
        return "Child says: " + [1].greet()
Drag options to blanks, or click blank then click option'
Asuper()
Bself
CParent
DChild
Attempts:
3 left
💡 Hint
Common Mistakes
Calling the method on self which causes recursion.
Calling the method on the child class name instead of the parent.
3fill in blank
hard

Fix the error in the child class constructor to properly call the parent constructor.

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

class Child(Parent):
    def __init__(self, name, age):
        [1].__init__(self, name)
        self.age = age
Drag options to blanks, or click blank then click option'
Asuper()
BChild
Cself
DParent
Attempts:
3 left
💡 Hint
Common Mistakes
Using self.__init__ which causes infinite recursion.
Using super() without parentheses or incorrectly.
4fill in blank
hard

Fill in the blank to create a child class that overrides a method and calls the parent method inside it.

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

class Child(Parent):
    def info(self):
        return [1]().info() + " and Child info"
Drag options to blanks, or click blank then click option'
AParent
Bself
Csuper
DChild
Attempts:
3 left
💡 Hint
Common Mistakes
Calling the method on self which causes recursion.
Calling the method on the child class name instead of the parent.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that maps child class names to their ages if age is greater than 10.

Python
children = [Child("Anna", 12), Child("Ben", 9), Child("Cara", 15)]
ages = { [1]: [2] for child in children if child.age [3] 10 }
Drag options to blanks, or click blank then click option'
Achild.name
Bchild.age
C>
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using the wrong attribute for keys or values.
Using the wrong comparison operator causing wrong filtering.

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