Inheritance in OOP Python: Rectangle & Cuboid Example
Rectangle
# Define a class named 'Rectangle'
class Rectangle:
"""
A class to represent a rectangle and calculate its area.
"""
# The constructor method to initialize the object with length and width
def __init__(self, length, width):
"""
Initializes a Rectangle object.
Args:
length (float): The length of the rectangle.
width (float): The width of the rectangle.
"""
self.length = length
self.width = width
# A method to calculate the area of the rectangle
def calculate_area(self):
"""
Calculates and returns the area of the rectangle.
Returns:
float: The area of the rectangle.
"""
return self.length * self.width
# --- Example Usage ---
# Create an instance (an object) of the Rectangle class
# We'll create a rectangle with a length of 10 and a width of 5
try:
my_rectangle = Rectangle(10, 5)
# Call the calculate_area method on our object
area = my_rectangle.calculate_area()
# Print the result
print(f"The area of the rectangle is: {area}")
except Exception as e:
print(f"An error occurred: {e}")
# You can create another rectangle with different dimensions
try:
another_rectangle = Rectangle(7.5, 3.2)
area_2 = another_rectangle.calculate_area()
print(f"The area of the second rectangle is: {area_2}")
except Exception as e:
print(f"An error occurred: {e}")
Inheritance in OOP Python: Rectangle & Cuboid Example
Inheritance in object-oriented programming (OOP) allows a new class (the child class) to inherit properties and methods from an existing class (the parent class). This is a powerful concept for code reusability β»οΈ and establishing a logical “is-a” relationship between classes. For instance, a Cuboid is a type of Rectangle, so it makes sense for it to inherit from it.
π Program Breakdown
In this example, we’ll use a Rectangle class as the parent and a Cuboid class as the child. The Cuboid will inherit everything from Rectangle and add its own specific properties and methods, such as height.
π Python Program
Python
# Parent class π§βπ»
class Rectangle:
def __init__(self, length, width):
self.length = length
self.width = width
def area(self):
return self.length * self.width
def perimeter(self):
return 2 * (self.length + self.width)
# Child class πΆ
class Cuboid(Rectangle):
def __init__(self, length, width, height):
# Call the parent class's constructor
#super().__init__(length, width)
self.height = height
def volume(self):
return self.area() * self.height
def surface_area(self):
return 2 * (self.area() + (self.length * self.height) + (self.width * self.height))
# Create an instance of the Cuboid class π¦
cuboid = Cuboid(10, 5, 4)
# Accessing methods from both parent and child classes
print(f"The area of the cuboid's base is: {cuboid.area()}")
print(f"The volume of the cuboid is: {cuboid.volume()}")
print(f"The surface area of the cuboid is: {cuboid.surface_area()}")
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[3], line 30
27 cuboid = Cuboid(10, 5, 4)
29 # Accessing methods from both parent and child classes
---> 30 print(f"The area of the cuboid's base is: {cuboid.area()}")
31 print(f"The volume of the cuboid is: {cuboid.volume()}")
32 print(f"The surface area of the cuboid is: {cuboid.surface_area()}")
Cell In[3], line 8, in Rectangle.area(self)
7 def area(self):
----> 8 return self.length * self.width
AttributeError: 'Cuboid' object has no attribute 'length'
π Key Concepts
RectangleClass: This is our parent class. It provides the foundational properties (length,width) and methods (area,perimeter) that the child class can reuse.CuboidClass: This is our child class, inheriting fromRectangle. The(Rectangle)in the class definition is the key.super().__init__(): This function is a lifesaver! It calls the__init__method of the parent class, which automatically initializeslengthandwidthfor us. This saves you from rewriting code βοΈ.- Method Reusability: The
Cuboidclassβsvolume()method demonstrates a key benefit of inheritance. It calls the parent’sarea()method to calculate its volume, saving you from writing the area formula again.
Inheritance allows you to create specialized classes that build upon general ones, promoting clean, organized, and reusable code β¨.