Hone logo
Hone
Problems

Designing a Simple Product Class

This challenge focuses on creating a Python class that represents a product with several properties. Defining classes and their properties is a fundamental concept in object-oriented programming, allowing you to model real-world entities in your code and organize data effectively. Your task is to create a Product class with specific attributes and methods to manage product information.

Problem Description

You need to design and implement a Product class in Python. This class should represent a product with the following properties:

  • name: A string representing the name of the product.
  • price: A float representing the price of the product.
  • quantity: An integer representing the quantity of the product in stock.
  • description: A string describing the product.

The class should have an __init__ method to initialize these properties when a Product object is created. It should also include a method called calculate_total_value that returns the total value of the product in stock (price * quantity).

Key Requirements:

  • The __init__ method must accept name, price, quantity, and description as arguments and assign them to the corresponding instance variables.
  • The price must be a non-negative number.
  • The quantity must be a non-negative integer.
  • The calculate_total_value method must return a float representing the total value.

Expected Behavior:

When a Product object is created, its properties should be initialized correctly. Calling calculate_total_value should return the correct total value based on the current price and quantity.

Edge Cases to Consider:

  • What should happen if the price or quantity is negative during initialization? (Consider raising a ValueError.)
  • What should happen if the input types are incorrect (e.g., price is a string)? (Consider raising a TypeError.)

Examples

Example 1:

Input: Product("Laptop", 1200.00, 5, "High-performance laptop for professionals.")
Output: 6000.0
Explanation: The price is 1200.00 and the quantity is 5, so the total value is 1200.00 * 5 = 6000.0.

Example 2:

Input: Product("Mouse", 25.50, 20, "Wireless ergonomic mouse.")
Output: 510.0
Explanation: The price is 25.50 and the quantity is 20, so the total value is 25.50 * 20 = 510.0.

Example 3: (Edge Case)

Input: Product("Keyboard", -50.00, 10, "Mechanical keyboard.")
Output: ValueError: Price must be non-negative.
Explanation: The price is negative, which is invalid. A ValueError should be raised.

Constraints

  • price must be a non-negative float.
  • quantity must be a non-negative integer.
  • name and description must be strings.
  • The calculate_total_value method must return a float.
  • The code should be well-documented and easy to understand.

Notes

  • Consider using type hints for improved code readability and maintainability.
  • Think about how to handle invalid input during object creation. Raising exceptions is a good practice for error handling.
  • Focus on creating a clean and well-structured class that adheres to object-oriented principles.
Loading editor...
python