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

  • Unlock the Power of Python: What is Python, History, Uses, & 7 Amazing Applications

    What is Python and History of python, different sectors python used Python is one of the most popular programming languages worldwide, known for its versatility and beginner-friendliness . From web development to data science and machine learning, Python has become an indispensable tool for developers and tech professionals across various industries . This blog post…

  • Class 10 String Comparison ,Bitwise Operators,Chaining Comparisons

    String Comparison with Relational Operators in Python 💬⚖️ In Python, you can compare strings using relational operators (<, <=, >, >=, ==, !=). These comparisons are based on lexicographical (dictionary) order, which uses the Unicode code points of the characters. 📖 How String Comparison Works 🤔 Examples 💡 Python Important Notes 📌 String comparison is…

  • Python Nested Lists

    Python Nested Lists: Explanation & Examples A nested list is a list that contains other lists as its elements. They are commonly used to represent matrices, tables, or hierarchical data structures. 1. Basic Nested List Creation python # A simple 2D list (matrix) matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]…

  • group() and groups()

    Python re group() and groups() Methods Explained The group() and groups() methods are used with match objects to extract captured groups from regex patterns. They work on the result of re.search(), re.match(), or re.finditer(). group() Method groups() Method Example 1: Basic Group Extraction python import retext = “John Doe, age 30, email: john.doe@email.com”# Pattern with multiple capture groupspattern = r'(\w+)\s+(\w+),\s+age\s+(\d+),\s+email:\s+([\w.]+@[\w.]+)’///The Pattern: r'(\w+)\s+(\w+),\s+age\s+(\d+),\s+email:\s+([\w.]+@[\w.]+)’Breakdown by Capture…

  • Instance Variables,methods

    Instance Variables Instance variables are variables defined within a class but outside of any method. They are unique to each instance (object) of a class. This means that if you create multiple objects from the same class, each object will have its own separate copy of the instance variables. They are used to store the…

  • Function Returns Multiple Values in Python

    Function Returns Multiple Values in Python In Python, functions can return multiple values by separating them with commas. These values are returned as a tuple, but they can be unpacked into individual variables. Basic Syntax python def function_name(): return value1, value2, value3 # Calling and unpacking var1, var2, var3 = function_name() Simple Examples Example 1:…

Leave a Reply

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