1
resposta

[Projeto] Atividade Hora da prática: instância de uma classe

class Restaurante:
    nome = ''
    categoria = ''
    ativo = False

restaurante_praca = Restaurante()
restaurante_praca.nome = 'Praça'
restaurante_praca.categoria = 'Italiana'

restaurantes = [restaurante_praca]
print(f'Nome: {restaurante_praca.nome}')
print(restaurante_praca.ativo)

if restaurante_praca.ativo == True:
    print('O restaurante está aberto\n')
else:
    print('O restaurante está fechado')

print('Atividade 4:')
categoria = Restaurante.categoria
print(f'Categoria: {categoria}\n')

print('Ativiadade 5:')
Restaurante.nome = 'Churrascaria'
nome = Restaurante.nome
print(f'Nome: {nome}\n')

print('Atividade 6:')
restaurante_pizza = Restaurante()
restaurante_pizza.nome = 'Pizza Place'
restaurante_pizza.categoria = 'Fast Food'
print(vars(restaurante_pizza))

print('\nAtividade 7:')
print(f'Categoria do restaurante pizza: {restaurante_pizza.categoria}\n')
print('Atividade 8:')
restaurante_pizza.ativo = True
print(f'O restaurante pizza está ativo? {restaurante_pizza.ativo}\n')

print('Atividade 9:')
print(f'Nome do restaurante praça: {restaurante_praca.nome} e categoria: {restaurante_praca.categoria}\n')
1 resposta

Oi, Luís Henrique!

Parabéns por concluir essa sequência de atividades. É excelente ver como você explorou a criação de classes e a manipulação de instâncias, que são os pilares da Orientação a Objetos.

Sua resolução demonstra um domínio muito bom sobre como os objetos carregam seus próprios estados em Python. Ao instanciar restaurante_praca e restaurante_pizza, você praticou a essência da OO: usar um mesmo molde (a classe Restaurante) para criar elementos distintos com características próprias. O uso da função vars() na atividade 6 é uma ótima escolha, pois ajuda a visualizar como o Python armazena os atributos dentro do objeto de forma organizada.

Observação sobre atributos de Classe vs. Instância

Para elevar ainda mais o nível do seu código, vale notar um detalhe técnico nas atividades 4 e 5. Quando você faz Restaurante.nome = 'Churrascaria', você está alterando o atributo diretamente na classe (o molde).

Em Python, o ideal é sempre manipular as instâncias (como você fez com restaurante_pizza.nome). Alterar a classe diretamente pode fazer com que todos os novos restaurantes que você criar já nasçam com o nome "Churrascaria" por padrão, o que nem sempre é o desejado. Você pode conferir mais detalhes sobre essa diferença na documentação oficial sobre classes e instâncias.

Conseguiu perceber como a Orientação a Objetos facilita a organização do código quando precisamos lidar com muitos itens do mesmo tipo, como uma lista de centenas de restaurantes?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!