PYnative

Python Programming

  • Learn Python
    • Python Tutorials
    • Python Basics
    • Python Interview Q&As
  • Exercises
  • Quizzes
  • Code Editor
Home » Python Exercises » Python Object-Oriented Programming (OOP) Exercise: Classes and Objects Exercises

Python Object-Oriented Programming (OOP) Exercise: Classes and Objects Exercises

Updated on: April 17, 2025 | 55 Comments

This Object-Oriented Programming (OOP) exercise aims to help you to learn and practice OOP concepts. All questions are tested on Python 3.

Python Object-oriented programming (OOP) is based on the concept of “objects,” which can contain data and code: data in the form of instance variables (often known as attributes or properties), and code, in the form method. I.e., Using OOP, we encapsulate related properties and behaviors into individual objects.

What is included in this Python OOP exercise?

This OOP classes and objects exercise includes 10 coding questions, programs, and challenges. All solutions are tested on Python 3.

This exercise covers questions on the following topics:

  • Class and Object creation
  • Instance variables and Methods, and Class level attributes
  • Model systems with class inheritance i.e., inherit From Other Classes
  • Parent Classes and Child Classes
  • Extend the functionality of Parent Classes using Child class
  • Object checking

When you complete each question, you will become more familiar with Object-Oriented Programming. Please let us know if you have any alternative solutions; it will help other developers.

Use Online Code Editor to solve exercise questions.

Refer:

  • Guide on Python OOP
  • Inheritance in Python
  • Python OOP Interview Questions

Table of contents

  • OOP Exercise 1: Create a Class with instance attributes
  • OOP Exercise 2: Create a Vehicle class without any variables and methods
  • OOP Exercise 3: Create a child class Bus that will inherit all of the variables and methods of the Vehicle class
  • OOP Exercise 4: Class Inheritance
  • OOP Exercise 5: Define a property that must have the same value for every class instance (object)
  • OOP Exercise 6: Class Inheritance
  • OOP Exercise 7: Check type of an object
  • OOP Exercise 8: Determine if School_bus is also an instance of the Vehicle class
  • OOP Exercise 9: Check object is a subclass of a particular class
  • OOP Exercise 10: Calculate the area of different shapes using OOP

OOP Exercise 1: Create a Class with instance attributes

Write a Python program to create a Vehicle class with max_speed and mileage instance attributes.

Refer:

  • Classes and Objects in Python
  • Instance variables in Python
  • Constructors in Python
Show Solution
class Vehicle:
    def __init__(self, max_speed, mileage):
        self.max_speed = max_speed
        self.mileage = mileage

modelX = Vehicle(240, 18)
print(modelX.max_speed, modelX.mileage)Code language: Python (python)

OOP Exercise 2: Create a Vehicle class without any variables and methods

Show Solution
class Vehicle:
    passCode language: Python (python)

OOP Exercise 3: Create a child class Bus that will inherit all of the variables and methods of the Vehicle class

Given:

class Vehicle:

    def __init__(self, name, max_speed, mileage):
        self.name = name
        self.max_speed = max_speed
        self.mileage = mileageCode language: Python (python)

Create a Bus object that will inherit all of the variables and methods of the parent Vehicle class and display it.

Expected Output:

Vehicle Name: School Volvo Speed: 180 Mileage: 12

Refer: Inheritance in Python

Show Solution
class Vehicle:

    def __init__(self, name, max_speed, mileage):
        self.name = name
        self.max_speed = max_speed
        self.mileage = mileage

class Bus(Vehicle):
    pass

School_bus = Bus("School Volvo", 180, 12)
print("Vehicle Name:", School_bus.name, "Speed:", School_bus.max_speed, "Mileage:", School_bus.mileage)Code language: Python (python)

OOP Exercise 4: Class Inheritance

Given:

Create a Bus class that inherits from the Vehicle class. Give the capacity argument of Bus.seating_capacity() a default value of 50.

Use the following code for your parent Vehicle class.

class Vehicle:
    def __init__(self, name, max_speed, mileage):
        self.name = name
        self.max_speed = max_speed
        self.mileage = mileage

    def seating_capacity(self, capacity):
        return f"The seating capacity of a {self.name} is {capacity} passengers"Code language: Python (python)

Expected Output:

The seating capacity of a bus is 50 passengers

Refer:

  • Inheritance in Python
  • Polymorphism in Python
Show Hint
  • First, use method overriding.
  • Next, use default method argument in the seating_capacity() method definition of a bus class.
Show Solution
class Vehicle:
    def __init__(self, name, max_speed, mileage):
        self.name = name
        self.max_speed = max_speed
        self.mileage = mileage

    def seating_capacity(self, capacity):
        return f"The seating capacity of a {self.name} is {capacity} passengers"

class Bus(Vehicle):
    # assign default value to capacity
    def seating_capacity(self, capacity=50):
        return super().seating_capacity(capacity=50)

School_bus = Bus("School Volvo", 180, 12)
print(School_bus.seating_capacity())Code language: Python (python)

OOP Exercise 5: Define a property that must have the same value for every class instance (object)

Define a class attribute”color” with a default value white. I.e., Every Vehicle should be white.

Use the following code for this exercise.

class Vehicle:

    def __init__(self, name, max_speed, mileage):
        self.name = name
        self.max_speed = max_speed
        self.mileage = mileage

class Bus(Vehicle):
    pass

class Car(Vehicle):
    passCode language: Python (python)

Expected Output:

Color: White, Vehicle name: School Volvo, Speed: 180, Mileage: 12
Color: White, Vehicle name: Audi Q5, Speed: 240, Mileage: 18

Refer: Class Variable in Python

Show Hint

Define a color as a class variable in a Vehicle class

Show Solution

Variables created in __init__() are called instance variables. An instance variable’s value is specific to a particular instance of the class. For example, in the solution, all Vehicle objects have a name and a max_speed, but the values of the name and max_speed variables will vary depending on the Vehicle instance.

On the other hand, a class variable is shared between all class instances. You can define a class attribute by assigning a value to a variable name outside of __init__().

class Vehicle:
    # Class attribute
    color = "White"

    def __init__(self, name, max_speed, mileage):
        self.name = name
        self.max_speed = max_speed
        self.mileage = mileage

class Bus(Vehicle):
    pass

class Car(Vehicle):
    pass

School_bus = Bus("School Volvo", 180, 12)
print(School_bus.color, School_bus.name, "Speed:", School_bus.max_speed, "Mileage:", School_bus.mileage)

car = Car("Audi Q5", 240, 18)
print(car.color, car.name, "Speed:", car.max_speed, "Mileage:", car.mileage)Code language: Python (python)

OOP Exercise 6: Class Inheritance

Given:

Create a Bus child class that inherits from the Vehicle class. The default fare charge for any vehicle is its seating capacity multiplied by 100 (seating capacity * 100).

If the vehicle is a Bus instance, we need to add an extra 10% to the full fare as a maintenance charge. Therefore, the total fare for a Bus instance will be the final amount, calculated as total fare plus 10% of the total fare. (final amount = total fare + 10% of the total fare.)

Note: The bus seating capacity is 50, so the final fare amount should be 5500.

Use the following code for your parent Vehicle class. We need to access the parent class from within a method of a child class.

class Vehicle:
    def __init__(self, name, mileage, capacity):
        self.name = name
        self.mileage = mileage
        self.capacity = capacity

    def fare(self):
        return self.capacity * 100

class Bus(Vehicle):
    pass

School_bus = Bus("School Volvo", 12, 50)
print("Total Bus fare is:", School_bus.fare())Code language: Python (python)

Expected Output:

Total Bus fare is: 5500.0
Show Hint
  • You need to override the fare() method of the Vehicle class in the Bus class.
  • Use super() function within a child class to call methods of a parent (or super) class.

Method overriding lets a subclass provide its own version of a method that its superclass already has. It allows the subclass to customize or specialize the behavior inherited from the superclass.

Show Solution
class Vehicle:
    def __init__(self, name, mileage, capacity):
        self.name = name
        self.mileage = mileage
        self.capacity = capacity

    def fare(self):
        return self.capacity * 100

class Bus(Vehicle):
    def fare(self):
        amount = super().fare()
        amount += amount * 10 / 100
        return amount

School_bus = Bus("School Volvo", 12, 50)
print("Total Bus fare is:", School_bus.fare())Code language: Python (python)

OOP Exercise 7: Check type of an object

Write a program to determine which class a given Bus object belongs to.

Given:

class Vehicle:
    def __init__(self, name, mileage, capacity):
        self.name = name
        self.mileage = mileage
        self.capacity = capacity

class Bus(Vehicle):
    pass

School_bus = Bus("School Volvo", 12, 50)Code language: Python (python)
Show Hint

Use Python’s built-in function type().

Show Solution
class Vehicle:
    def __init__(self, name, mileage, capacity):
        self.name = name
        self.mileage = mileage
        self.capacity = capacity

class Bus(Vehicle):
    pass

School_bus = Bus("School Volvo", 12, 50)

# Python's built-in type()
print(type(School_bus))Code language: Python (python)

OOP Exercise 8: Determine if School_bus is also an instance of the Vehicle class

Given:

class Vehicle:
    def __init__(self, name, mileage, capacity):
        self.name = name
        self.mileage = mileage
        self.capacity = capacity

class Bus(Vehicle):
    pass

School_bus = Bus("School Volvo", 12, 50)Code language: Python (python)
Show Hint

Use isinstance() function

Show Solution
class Vehicle:
    def __init__(self, name, mileage, capacity):
        self.name = name
        self.mileage = mileage
        self.capacity = capacity

class Bus(Vehicle):
    pass

School_bus = Bus("School Volvo", 12, 50)

# Python's built-in isinstance() function
print(isinstance(School_bus, Vehicle))Code language: Python (python)

OOP Exercise 9: Check object is a subclass of a particular class

Given:

class Animal:
    pass

class Dog(Animal):
    pass

class Puppy(Dog):
    pass

class Cat:
    passCode language: Python (python)

Write a code to check the following

  1. Dog is a subclass of Animal? –> True
  2. Animal is a subclass of Dog? –> False
  3. Cat is a subclass of Animal? –> False
  4. Puppy is a subclass of Animal –> True
Show Hint

Use the issubclass() function. The issubclass(potential_subclass, potential_superclass) returns True if the first argument is a subclass (or the same class) of the second argument, and False otherwise.

Show Solution
class Animal:
    pass

class Dog(Animal):
    pass

class Puppy(Dog):
    pass

class Cat:
    pass

print(issubclass(Dog, Animal))   # Output: True  (Dog is a subclass of Animal)
print(issubclass(Animal, Dog))   # Output: False (Animal is not a subclass of Dog)
print(issubclass(Cat, Animal))    # Output: False (Cat is not related to Animal)
print(issubclass(Puppy, Animal)) # Output: True (Puppy inherits from Dog, which inherits from Animal)Code language: Python (python)

OOP Exercise 10: Calculate the area of different shapes using OOP

Given:

You have given a Shape class and subclasses Circle  and Square. The parent class (Shape) has a area() method.

Now, Write a OOP code to calculate the area of each shapes (each subclass must write its own implementation of area() method to calculates its area).

Use the following code

class Shape:
    def area(self):
        raise NotImplementedError("Area method must be implemented by subclasses")

class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius

class Square(Shape):
    def __init__(self, side):
        self.side = side

# Example of polymorphism
shapes = [Circle(5), Square(7), Circle(3)]

for shape in shapes:
    print(shape.area())  # Output: 78.53975, 49, 28.27431Code language: Python (python)

Refer:

  • Inheritance in Python
  • Polymorphism in Python
Show Hint
  • Use Method Overloading.
  • The core idea is that the same method name can have different implementations depending on the class of the object.

Polymorphism lets you treat objects of different classes in a uniform way. Imagine you have a Shape class, and then you have subclasses like Circle, Square, and Triangle. Each of these shapes has an area() method, but the way you calculate the area is different for each shape.

Show Solution
class Shape:
    def area(self):
        raise NotImplementedError("Area method must be implemented by subclasses")

class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius

    def area(self):  # Overriding the area method
        return 3.14159 * self.radius**2

class Square(Shape):
    def __init__(self, side):
        self.side = side

    def area(self):  # Overriding the area method
        return self.side * self.side

# Example of polymorphism
shapes = [Circle(5), Square(7), Circle(3)]

for shape in shapes:
    print(shape.area())  # Output: 78.53975, 49, 28.27431Code language: Python (python)

Also, See: Python OOP Interview Questions

Filed Under: Python, Python Exercises, Python Object-Oriented Programming (OOP)

Did you find this page helpful? Let others know about it. Sharing helps me continue to create free Python resources.

TweetF  sharein  shareP  Pin

About Vishal

Image

I’m Vishal Hule, the Founder of PYnative.com. As a Python developer, I enjoy assisting students, developers, and learners. Follow me on Twitter.

Related Tutorial Topics:

Python Python Exercises Python Object-Oriented Programming (OOP)

Python Exercises and Quizzes

Free coding exercises and quizzes cover Python basics, data structure, data analytics, and more.

  • 15+ Topic-specific Exercises and Quizzes
  • Each Exercise contains 10 questions
  • Each Quiz contains 12-15 MCQ
Exercises
Quizzes

Loading comments... Please wait.

In: Python Python Exercises Python Object-Oriented Programming (OOP)
TweetF  sharein  shareP  Pin

  Python Exercises

  • All Python Exercises
  • Basic Exercise for Beginners
  • Input and Output Exercise
  • Loop Exercise
  • Functions Exercise
  • String Exercise
  • Data Structure Exercise
  • List Exercise
  • Dictionary Exercise
  • Set Exercise
  • Tuple Exercise
  • Date and Time Exercise
  • OOP Exercise
  • File Handling Exercise
  • Python JSON Exercise
  • Random Data Generation Exercise
  • NumPy Exercise
  • Pandas Exercise
  • Matplotlib Exercise
  • Python Database Exercise

 Explore Python

  • Python Tutorials
  • Python Exercises
  • Python Quizzes
  • Python Interview Q&A
  • Python Programs

All Python Topics

Python Basics Python Exercises Python Quizzes Python Interview Python File Handling Python OOP Python Date and Time Python Random Python Regex Python Pandas Python Databases Python MySQL Python PostgreSQL Python SQLite Python JSON

About PYnative

PYnative.com is for Python lovers. Here, You can get Tutorials, Exercises, and Quizzes to practice and improve your Python skills.

Explore Python

  • Learn Python
  • Python Basics
  • Python Databases
  • Python Exercises
  • Python Quizzes
  • Online Python Code Editor
  • Python Tricks

Follow Us

To get New Python Tutorials, Exercises, and Quizzes

  • Twitter
  • Facebook
  • Sitemap

Legal Stuff

  • About Us
  • Contact Us

We use cookies to improve your experience. While using PYnative, you agree to have read and accepted our:

  • Terms Of Use
  • Privacy Policy
  • Cookie Policy

Copyright © 2018–2025 pynative.com

Advertisement