Classes de dados em Python

Vaibhav Vaibhav 4 dezembro 2021
Classes de dados em Python

As classes gerais encontradas em Python ou qualquer outra linguagem de programação são projetadas para representar uma entidade. Como eles representam uma entidade, eles são preenchidos com muitas funções, lógicas e atributos, onde cada função executa uma tarefa específica e os atributos de classe são manipulados usando as funções de classe.

Além das classes gerais, existe ainda outro tipo de classe, a saber, classe de dados. Este artigo falará sobre classes de dados encontradas não apenas em Python, mas também em outras linguagens de programação.

Python DataClass

Ao contrário dessas classes regulares, as classes de dados são voltadas para armazenar o estado de uma entidade. Eles não contêm muita lógica. Eles armazenam alguns dados que representam estatísticas de um objeto ou entidade.

Vamos entender melhor as classes de dados com um exemplo. Por exemplo, você está escrevendo um programa que tenta imitar o comportamento de um carrinho de compras em uma loja de roupas. O carrinho de compras conterá produtos ou roupas. Considere que existem três tipos de roupa, nomeadamente, Chapéus, Topwear e Bottomwear. Uma vez que nem todos os gêneros podem usar todos os tecidos, também temos informações sobre o gênero para o qual o tecido é fabricado. Consideremos apenas três categorias: Masculino, Feminino e Neutro (ambos podem usar). Cada produto tem um nome, preço, tamanho e empresa pela qual foi fabricado.

Agora, se temos que criar um programa que imite um carrinho de compras, podemos criar duas classes, a saber, ShoppingCart e Product. A classe ShoppingCart conterá toda a lógica, como adicionar e retirar produtos, manipular a quantidade de produtos, controlar os produtos presentes no carrinho, etc. E, um único produto será representado pela classe Product. Product é uma classe de dados e representará apenas um produto.

A classe Produto será parecida com isto.

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 você pode ver, a classe Product não possui nenhuma lógica. Tudo o que faz é representar um produto. É assim que uma classe de dados se parece, apenas atributos e lógica mínima.

As duas funções implementadas são necessárias se quisermos que a classe de dados seja hashble. Quando uma classe pode ser hash, seu objeto pode ser usado como uma chave no dicionário e pode ser mapeado para valores fixos. Como um código hash será necessário para mapear os valores, essas duas funções são essenciais.

Também se pode implementar a função __repr__, um método particular que retorna a representação de string de um objeto de classe.

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.

Artigo relacionado - Python Class