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

  • Special Sequences in Python

    Special Sequences in Python Regular Expressions – Detailed Explanation Special sequences are escape sequences that represent specific character types or positions in regex patterns. 1. \A – Start of String Anchor Description: Matches only at the absolute start of the string (unaffected by re.MULTILINE flag) Example 1: Match only at absolute beginning python import re text = “Start here\nStart…

  • Create a User-Defined Exception

    A user-defined exception in Python is a custom error class that you create to handle specific error conditions within your code. Instead of relying on built-in exceptions like ValueError, you define your own to make your code more readable and to provide more specific error messages. You create a user-defined exception by defining a new…

  • File Handling in Python

    File Handling in Python File handling is a crucial aspect of programming that allows you to read from and write to files. Python provides built-in functions and methods to work with files efficiently. Basic File Operations 1. Opening a File Use the open() function to open a file. It returns a file object. python # Syntax: open(filename,…

  • Else Block in Exception Handling in Python

    Else Block in Exception Handling in Python The else block in Python exception handling executes only if the try block completes successfully without any exceptions. It’s placed after all except blocks and before the finally block. Basic Syntax: python try: # Code that might raise an exception except SomeException: # Handle the exception else: # Code that runs only if no exception…

  • String Alignment and Padding in Python

    String Alignment and Padding in Python In Python, you can align and pad strings to make them visually consistent in output. The main methods used for this are: 1. str.ljust(width, fillchar) Left-aligns the string and fills remaining space with a specified character (default: space). Syntax: python string.ljust(width, fillchar=’ ‘) Example: python text = “Python” print(text.ljust(10)) #…

  • ASCII ,Uni Code Related Functions in Python

    ASCII Code and Related Functions in Python ASCII (American Standard Code for Information Interchange) is a character encoding standard that assigns numerical values to letters, digits, punctuation marks, and other characters. Here’s an explanation of ASCII and Python functions that work with it. ASCII Basics Python Functions for ASCII 1. ord() – Get ASCII value of a…

Leave a Reply

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