Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Metodo especial __init__

Sei que a aula sobre esse metodo já passou, mas, poderiam me explicar com mais clareza como funciona o metodo init?

2 respostas
solução!

Oi, Eduardo! Tudo bem?

O __init__ é um método especial em Python, conhecido como o "construtor" da classe, ele é automaticamente chamado quando uma nova instância (ou objeto) da classe é criada, a principal função do __init__ é inicializar os atributos do objeto com valores específicos.

Vamos usar o exemplo da aula para ilustrar:

class Restaurante:
    restaurantes = []

    def __init__(self, nome, categoria):
        self.nome = nome
        self.categoria = categoria
        self.ativo = False
        Restaurante.restaurantes.append(self)
    
    def __str__(self):
        return f'{self.nome} | {self.categoria}'

Aqui está o que acontece quando criamos um novo restaurante:

  1. Definição dos Atributos: Quando criamos um novo objeto da classe Restaurante, o método __init__ é chamado automaticamente, ele recebe os parâmetros nome e categoria e os atribui aos atributos do objeto (self.nome e self.categoria). Além disso, ele define o atributo ativo como False.

  2. Adição à Lista: O método __init__ também adiciona o novo objeto à lista restaurantes da classe Restaurante usando Restaurante.restaurantes.append(self). Isso significa que toda vez que um novo restaurante é criado, ele é automaticamente adicionado a essa lista.

Vamos ver um exemplo prático:

# Criando dois objetos da classe Restaurante
restaurante_praca = Restaurante('Praça', 'Gourmet')
restaurante_pizza = Restaurante('Pizza Express', 'Italiana')

# Listando os restaurantes
Restaurante.listar_restaurantes()

Quando executamos o código acima, o método __init__ é chamado duas vezes: uma para restaurante_praca e outra para restaurante_pizza. Cada restaurante é adicionado à lista restaurantes, e quando chamamos Restaurante.listar_restaurantes(), ele imprime:

Praça | Gourmet | False
Pizza Express | Italiana | False

Espero ter ajudado!

Um forte abraço e bons estudos!

Muito obrigado