Clases de datos en Python

Vaibhav Vaibhav 4 diciembre 2021
Clases de datos en Python

Las clases generales que se encuentran en Python o cualquier otro lenguaje de programación están diseñadas para representar una entidad. Dado que representan una entidad, están llenos de muchas funciones, lógica y atributos, donde cada función realiza una tarea específica y los atributos de clase se manipulan utilizando las funciones de clase.

Aparte de las clases generales, existe otro tipo de clase, a saber, la clase de datos. Este artículo hablará sobre las clases de datos que se encuentran no solo en Python sino también en otros lenguajes de programación.

Python DataClass

A diferencia de estas clases regulares, las clases de datos están orientadas a almacenar el estado de una entidad. No contienen mucha lógica. Almacenan algunos datos que representan estadísticas de un objeto o una entidad.

Entendamos mejor las clases de datos con un ejemplo. Por ejemplo, está escribiendo un programa que intenta imitar el comportamiento de un carrito de compras en una tienda de ropa. El carrito de la compra contendrá productos o ropa. Considere que hay tres tipos de ropa, a saber, Sombreros, Topwear y Bottomwear. Dado que no todos los géneros pueden usar todas las telas, también tenemos información sobre el género para el que se fabrica una tela. Consideremos solo tres categorías: Masculino, Femenino y Neutral (Ambos pueden usarlo). Cada producto tiene un nombre, precio, tamaño y compañía por la que fue fabricado.

Ahora, si tenemos que crear un programa para imitar un carrito de compras, podemos crear dos clases, a saber, ShoppingCart y Producto. La clase ShoppingCart contendrá toda la lógica, como agregar y quitar productos, manipular el número de productos, realizar un seguimiento de los productos presentes dentro del carrito, etc. Y, un solo producto estará representado por la clase Product. Product es una clase de datos y solo representará un producto.

La clase Product se verá así.

class Product:
    """
    A class representing a product
    """

    def __init__(self, name, price, size, company, wearType, gender):
        self.name = name
        self.price = price
        self.size = size
        self.company = company
        self.wearType = wearType
        self.gender = gender

    def __hash__(self):
        """
        Returns a hash code for the class object
        """
        return hash(
            (self.name, self.price, self.size, self.company, self.wearType, self.gender)
        )

    def __eq__(self, other):
        """
        Checks weather two objects are equal or not
        """
        if not isinstance(other, Product):
            return False
        else:
            return (
                self.name,
                self.price,
                self.size,
                self.company,
                self.wearType,
                self.gender,
            ) == (
                other.name,
                other.price,
                other.size,
                other.company,
                other.wearType,
                other.gender,
            )

Como puede ver, la clase Product no tiene ninguna lógica. Todo lo que hace es representar un producto. Así es como se ve una clase de datos, solo atributos y lógica mínima.

Las dos funciones implementadas son necesarias si queremos que la clase de datos sea hash. Cuando una clase es hash, su objeto se puede usar como clave en el diccionario y se puede asignar a valores fijos. Dado que se necesitará un código hash para mapear valores, estas dos funciones son esenciales.

También se puede implementar la función __repr__, un método particular que devuelve la representación de cadena de un objeto de clase.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artículo relacionado - Python Class

Artículo relacionado - Python Dataclass