Olá, Eduardo.
Tudo bem?
Em Python, uma instância é um objeto que é criado a partir de uma classe. Quando você cria uma classe, está definindo um "molde" para os objetos que serão criados a partir dela. Cada objeto criado a partir dessa classe é uma instância dessa classe.
Incremento da Lista
No seu código, você tem uma classe Restaurante
com uma variável de classe chamada restaurantes
, que é uma lista. Essa lista é compartilhada por todas as instâncias da classe Restaurante
.
Quando você cria uma nova instância de Restaurante
, o método __init__
é chamado, e dentro dele, você está adicionando a nova instância (self
) à lista Restaurante.restaurantes
usando append
.
Aqui está um exemplo prático para ilustrar:
class Restaurante:
restaurantes = [] # Variável de classe
def __init__(self, nome, categoria):
self.nome = nome
self.categoria = categoria
self.ativo = False
Restaurante.restaurantes.append(self) # Adiciona a instância atual à lista de restaurantes
def __str__(self):
return f'{self.nome} | {self.categoria}'
@staticmethod
def listar_restaurantes():
for restaurante in Restaurante.restaurantes:
print(f'{restaurante.nome} | {restaurante.categoria} | {restaurante.ativo}')
# Criando instâncias de Restaurante
restaurante_praca = Restaurante('Praça', 'Gourmet')
restaurante_pizza = Restaurante('Pizza Express', 'Italiana')
# Listando os restaurantes
Restaurante.listar_restaurantes()
Explicação
Variável de Classe: restaurantes = []
é uma variável de classe, o que significa que ela é compartilhada por todas as instâncias da classe Restaurante
.
Método __init__
: Quando você cria uma nova instância de Restaurante
(por exemplo, restaurante_praca
), o método __init__
é executado. Dentro desse método, a instância atual (self
) é adicionada à lista Restaurante.restaurantes
usando append
.
Método listar_restaurantes
: Esse método percorre a lista Restaurante.restaurantes
e imprime as informações de cada restaurante.
Resposta à sua Pergunta
Sim, quando você usa Restaurante.restaurantes.append(self)
dentro do método __init__
, a instância atual (self
) é adicionada à lista de classe restaurantes
. Essa lista é, de fato, acessível globalmente dentro do contexto da classe Restaurante
.
Espero ter entendido e conseguido ajudar. Qualquer dúvida manda aqui. Bons estudos.