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

  • Rectangle Class: This is our parent class. It provides the foundational properties (length, width) and methods (area, perimeter) that the child class can reuse.
  • Cuboid Class: This is our child class, inheriting from Rectangle. 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 initializes length and width for us. This saves you from rewriting code ✍️.
  • Method Reusability: The Cuboid class’s volume() method demonstrates a key benefit of inheritance. It calls the parent’s area() 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 ✨.

Similar Posts

  • Python timedelta Explained

    Python timedelta Explained timedelta is a class in Python’s datetime module that represents a duration – the difference between two dates or times. It’s incredibly useful for date and time arithmetic. Importing timedelta python from datetime import timedelta, datetime, date Basic Syntax python timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) Examples 1. Basic timedelta Creation python from datetime…

  • What is list

    In Python, a list is a built-in data structure that represents an ordered, mutable (changeable), and heterogeneous (can contain different data types) collection of elements. Lists are one of the most commonly used data structures in Python due to their flexibility and dynamic nature. Definition of a List in Python: Example: python my_list = [1, “hello”, 3.14,…

  • Anchors (Position Matchers)

    Anchors (Position Matchers) in Python Regular Expressions – Detailed Explanation Basic Anchors 1. ^ – Start of String/Line Anchor Description: Matches the start of a string, or start of any line when re.MULTILINE flag is used Example 1: Match at start of string python import re text = “Python is great\nPython is powerful” result = re.findall(r’^Python’, text) print(result) #…

  • Formatting Date and Time in Python

    Formatting Date and Time in Python Python provides powerful formatting options for dates and times using the strftime() method and parsing using strptime() method. 1. Basic Formatting with strftime() Date Formatting python from datetime import date, datetime # Current date today = date.today() print(“Date Formatting Examples:”) print(f”Default: {today}”) print(f”YYYY-MM-DD: {today.strftime(‘%Y-%m-%d’)}”) print(f”MM/DD/YYYY: {today.strftime(‘%m/%d/%Y’)}”) print(f”DD-MM-YYYY: {today.strftime(‘%d-%m-%Y’)}”) print(f”Full month: {today.strftime(‘%B %d, %Y’)}”) print(f”Abbr…

  • List of machine learning libraries in python

    Foundational Libraries: General Machine Learning Libraries: Deep Learning Libraries: Other Important Libraries: This is not an exhaustive list, but it covers many of the most important and widely used machine learning libraries in Python. The choice of which library to use often depends on the specific task at hand, the size and type of data,…

Leave a Reply

Your email address will not be published. Required fields are marked *