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?
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?
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:
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.
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.
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!