Dog inherits from Animal

Python Practice › OOP Programs › Program 48

Dog inherits from Animal

EasyOOP Programs · 48 of 48

Create Dog (inherits Animal) with breed and weight, and a method to print all details.

Output
Bruno is brown, a Labrador weighing 28 kg

Approach

  1. Override show and reuse the parent’s message with super().

Solution

Python
class Animal:    def __init__(self, name, color):        self.name, self.color = name, color     def show(self):        return f"{self.name} is {self.color}" class Dog(Animal):    def __init__(self, name, color, breed, weight):        super().__init__(name, color)        self.breed, self.weight = breed, weight     def show(self):        return super().show() + f", a {self.breed} weighing {self.weight} kg" print(Dog("Bruno", "brown", "Labrador", 28).show())
Output
Bruno is brown, a Labrador weighing 28 kg

Learn the concept

New to this topic? Read the lesson, then come back.

More oop programs

← All 48 OOP Programs

Animal class

Python Practice › OOP Programs › Program 47

Animal class

EasyOOP Programs · 47 of 48

Create Animal with name and colour and a method to print them.

Output
Bruno is brown

Approach

  1. Store and print.

Solution

Python
class Animal:    def __init__(self, name, color):        self.name, self.color = name, color     def show(self):        print(f"{self.name} is {self.color}") Animal("Bruno", "brown").show()
Output
Bruno is brown

Learn the concept

New to this topic? Read the lesson, then come back.

More oop programs

← All 48 OOP Programs

ShoppingCart class

Python Practice › OOP Programs › Program 46

ShoppingCart class

EasyOOP Programs · 46 of 48

Create ShoppingCart with items and total cost, and methods to add and remove items and calculate the total.

Output
{'pen': (10, 5)} 50

Approach

  1. Store items in a dict of name -> (price, quantity).

Solution

Python
class ShoppingCart:    def __init__(self):        self.items = {}     def add(self, name, price, qty=1):        old_qty = self.items.get(name, (price, 0))[1]        self.items[name] = (price, old_qty + qty)     def remove(self, name):        self.items.pop(name, None)     def total_cost(self):        return sum(price * qty for price, qty in self.items.values()) cart = ShoppingCart()cart.add("pen", 10, 3)cart.add("bag", 650)cart.add("pen", 10, 2)cart.remove("bag")print(cart.items, cart.total_cost())
Output
{'pen': (10, 5)} 50

Line by line

Lines 5-7

Adding an item again increases its quantity instead of replacing it.

Lines 12-13

The total is calculated when needed, so it is always up to date.

Learn the concept

New to this topic? Read the lesson, then come back.

More oop programs

← All 48 OOP Programs

EBook with open and close

Python Practice › OOP Programs › Program 45

EBook with open and close

EasyOOP Programs · 45 of 48

Create EBook (inherits Book) with file_size and format, and methods to open and close the book.

Output
Opened Python Basics (PDF, 3.4 MB)
Closed Python Basics

Approach

  1. Track whether the e-book is open.

Solution

Python
class Book:    def __init__(self, title, author, pages):        self.title, self.author, self.pages = title, author, pages class EBook(Book):    def __init__(self, title, author, pages, file_size_mb, fmt):        super().__init__(title, author, pages)        self.file_size_mb, self.format = file_size_mb, fmt        self.is_open = False     def open(self):        self.is_open = True        return f"Opened {self.title} ({self.format}, {self.file_size_mb} MB)"     def close(self):        self.is_open = False        return f"Closed {self.title}" e = EBook("Python Basics", "SQA Tools", 220, 3.4, "PDF")print(e.open())print(e.close())
Output
Opened Python Basics (PDF, 3.4 MB)
Closed Python Basics

Learn the concept

New to this topic? Read the lesson, then come back.

More oop programs

← All 48 OOP Programs

Book class

Python Practice › OOP Programs › Program 44

Book class

EasyOOP Programs · 44 of 48

Create Book with title, author and pages, with getter methods.

Output
Wings of Fire | A. P. J. Abdul Kalam | 180

Approach

  1. One method per attribute.

Solution

Python
class Book:    def __init__(self, title, author, pages):        self.title, self.author, self.pages = title, author, pages     def get_title(self):        return self.title     def get_author(self):        return self.author     def get_pages(self):        return self.pages b = Book("Wings of Fire", "A. P. J. Abdul Kalam", 180)print(b.get_title(), "|", b.get_author(), "|", b.get_pages())
Output
Wings of Fire | A. P. J. Abdul Kalam | 180
Tip

In idiomatic Python you would usually read b.title directly and add @property only when extra logic is needed.

Learn the concept

New to this topic? Read the lesson, then come back.

More oop programs

← All 48 OOP Programs

Laptop class

Python Practice › OOP Programs › Program 43

Laptop class

EasyOOP Programs · 43 of 48

Create Laptop with brand, model and storage, with methods to start up, shut down and check storage.

Output
Inspiron 15 started True
512 GB
Inspiron 15 shut down False

Approach

  1. Keep an is_on flag.

Solution

Python
class Laptop:    def __init__(self, brand, model, storage_gb):        self.brand, self.model, self.storage_gb = brand, model, storage_gb        self.is_on = False     def start(self):        self.is_on = True        return f"{self.model} started"     def shutdown(self):        self.is_on = False        return f"{self.model} shut down"     def storage(self):        return f"{self.storage_gb} GB" lp = Laptop("Dell", "Inspiron 15", 512)print(lp.start(), lp.is_on)print(lp.storage())print(lp.shutdown(), lp.is_on)
Output
Inspiron 15 started True
512 GB
Inspiron 15 shut down False

Learn the concept

New to this topic? Read the lesson, then come back.

More oop programs

← All 48 OOP Programs

Phone class

Python Practice › OOP Programs › Program 42

Phone class

EasyOOP Programs · 42 of 48

Create Phone with brand, model and storage, with methods to call, text and check storage.

Output
Calling 98765 43210 from Galaxy A55
Text to 98765 43210: Running late
81 GB free

Approach

  1. Track used storage and report what is free.

Solution

Python
class Phone:    def __init__(self, brand, model, storage_gb):        self.brand, self.model, self.storage_gb = brand, model, storage_gb        self.used_gb = 0     def call(self, number):        return f"Calling {number} from {self.model}"     def text(self, number, message):        return f"Text to {number}: {message}"     def free_storage(self):        return self.storage_gb - self.used_gb p = Phone("Samsung", "Galaxy A55", 128)p.used_gb = 47print(p.call("98765 43210"))print(p.text("98765 43210", "Running late"))print(p.free_storage(), "GB free")
Output
Calling 98765 43210 from Galaxy A55
Text to 98765 43210: Running late
81 GB free

Learn the concept

New to this topic? Read the lesson, then come back.

More oop programs

← All 48 OOP Programs

VIPCustomer with credit

Python Practice › OOP Programs › Program 41

VIPCustomer with credit

EasyOOP Programs · 41 of 48

Create VIPCustomer (inherits Customer) with credit_limit and discount_rate, and a method for available credit.

Output
12000 850.0

Approach

  1. Available credit = credit limit + balance.

Solution

Python
class Customer:    def __init__(self, name, balance=0):        self.name, self.balance = name, balance class VIPCustomer(Customer):    def __init__(self, name, balance, credit_limit, discount_rate):        super().__init__(name, balance)        self.credit_limit, self.discount_rate = credit_limit, discount_rate     def available_credit(self):        return self.balance + self.credit_limit     def price_after_discount(self, price):        return price * (1 - self.discount_rate / 100) v = VIPCustomer("Meena", 2000, 10000, 15)print(v.available_credit(), v.price_after_discount(1000))
Output
12000 850.0

Learn the concept

New to this topic? Read the lesson, then come back.

More oop programs

← All 48 OOP Programs

Customer with deposit and withdraw

Python Practice › OOP Programs › Program 40

Customer with deposit and withdraw

EasyOOP Programs · 40 of 48

Create Customer with name and balance and methods to deposit and withdraw.

Output
750 Insufficient balance 650

Approach

  1. Return a message from each method.

Solution

Python
class Customer:    def __init__(self, name, balance=0):        self.name, self.balance = name, balance     def deposit(self, amount):        self.balance += amount        return self.balance     def withdraw(self, amount):        if amount > self.balance:            return "Insufficient balance"        self.balance -= amount        return self.balance c = Customer("Asha", 500)print(c.deposit(250), c.withdraw(1000), c.withdraw(100))
Output
750 Insufficient balance 650

Learn the concept

New to this topic? Read the lesson, then come back.

More oop programs

← All 48 OOP Programs

Manager with bonus

Python Practice › OOP Programs › Program 39

Manager with bonus

EasyOOP Programs · 39 of 48

Create Manager (inherits Employee) with department and bonus, and a method for total compensation.

Output
Ravi QA 1350000

Approach

  1. Total = salary + bonus.

Solution

Python
class Employee:    def __init__(self, name, salary):        self.name, self.salary = name, salary class Manager(Employee):    def __init__(self, name, salary, department, bonus):        super().__init__(name, salary)        self.department, self.bonus = department, bonus     def total(self):        return self.salary + self.bonus m = Manager("Ravi", 1200000, "QA", 150000)print(m.name, m.department, m.total())
Output
Ravi QA 1350000

Learn the concept

New to this topic? Read the lesson, then come back.

More oop programs

← All 48 OOP Programs