1
resposta

entender a teg super com a teg def

Ao escrever o código, porque repetimos a teg def init(self, name, preco, descricao): Usamos em baixo a teg super(). init(name, preco): Não era só para escrever (self, descricao), sendo que estamos herdando o atributo name e preco?

1 resposta

Olá, Jeanderson.

Tudo bem?

Quando estamos trabalhando com herança em Python, a ideia é que a subclasse (por exemplo, Prato) herde atributos e métodos da classe base (por exemplo, ItemCardapio). No entanto, a subclasse pode ter atributos adicionais ou comportamentos específicos que não estão presentes na classe base.

Vamos ao seu exemplo:

from modelos.cardapio.item_cardapio import ItemCardapio

class Prato(ItemCardapio):
    def __init__(self, nome, preco, descricao):
        super().__init__(nome, preco)
        self.descricao = descricao

Aqui está o que cada parte faz:

  1. Definição do método __init__ na subclasse Prato:

    def __init__(self, nome, preco, descricao):
    

    Este método é o construtor da subclasse Prato. Ele define que, para criar um objeto Prato, precisamos fornecer nome, preco e descricao.

  2. Chamada ao super().__init__(nome, preco):

    super().__init__(nome, preco)
    

    A função super() chama o método __init__ da classe base ItemCardapio. Isso é necessário para inicializar os atributos nome e preco que são definidos na classe base. Sem essa chamada, os atributos nome e preco não seriam inicializados corretamente na instância da subclasse Prato.

  3. Inicialização do atributo específico da subclasse Prato:

    self.descricao = descricao
    

    Aqui, estamos definindo um novo atributo descricao que é específico da subclasse Prato.

Se você não chamasse super().__init__(nome, preco), os atributos nome e preco não seriam configurados corretamente na instância Prato. A chamada ao super() garante que a lógica de inicialização da classe base seja executada, permitindo que a subclasse adicione ou modifique atributos conforme necessário.

Espero ter entendido e conseguido ajudar. Qualquer dúvida manda aqui. Bons estudos!