1
resposta

[Projeto] Hora da prática: métodos especiais e atributos

#Atividade 1

class Carro:
    def __init__(self, marca, modelo, ano):
        self.marca = marca
        self.modelo = modelo
        self.ano = ano

    def __str__(self):
        return f'{self.marca} {self.modelo} ({self.ano})'
    
carro1 = Carro('Toyota', 'Corolla', 2020)
print(carro1)


#Atividade 2, 3, 4 e 5
class Restaurante:
    def __init__(self):
        self.nome = ''
        self.categoria = ''
        self.ativo = False
        self.avaliacao = 0
        self.localizacao = ''

    def recebe_restaurante(self):
        # obrigatórios
        self.nome = input('Nome do restaurante: ')
        self.categoria = input('Categoria do restaurante: ')
        
        entrada_ativo = input('O restaurante está ativo? (s/n): ').lower()
        self.ativo = entrada_ativo == 's'

        # opcional: avaliação
        entrada_avaliacao = input('Avaliação (0-5) [ENTER para padrão]: ')
        if entrada_avaliacao == '':
            self.avaliacao = 0
        else:
            self.avaliacao = int(entrada_avaliacao)

        # opcional: localização
        entrada_local = input('Localização [ENTER para padrão]: ')
        if entrada_local == '':
            self.localizacao = 'não informada'
        else:
            self.localizacao = entrada_local

    def __str__(self):
        return f'{self.nome} - {self.categoria} - {self.ativo} - {self.avaliacao} - {self.localizacao}'
    
class Cliente:
    def __init__(self, nome, email, telefone = None, endereco = None):
        self.nome = nome
        self.email = email
        self.telefone = telefone
        self.endereco = endereco

    def cadastro_cliente(self):
        self.nome = input('Nome do cliente: ')
        self.email = input('Email do cliente: ')
        self.telefone = input('Telefone do cliente [ENTER para padrão]: ')
        if self.telefone == '':
            self.telefone = 'Telefone não informado'
        self.endereco = input('Endereço do cliente [ENTER para padrão]: ')
        if self.endereco == '':
            self.endereco = 'Endereço não informado'

    def __str__(self):
        return f'{self.nome}, {self.email}, {self.telefone}, {self.endereco})'

r1 = Restaurante()
r1.recebe_restaurante()
print(r1)

c1 = Cliente('', '')
c1.cadastro_cliente()
print(c1)

c2 = Cliente('', '')
c2.cadastro_cliente()
print(c2)

c3 = Cliente('', '')
c3.cadastro_cliente()
print(c3)
1 resposta

Oi, Luís! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Você aplicou bem o método especial __str__ para personalizar a exibição dos objetos e também usou __init__ para organizar os atributos das classes. Chamou atenção o cuidado em tratar valores opcionais, como telefone, endereco, avaliacao e localizacao, deixando o cadastro mais flexível.

Uma dica interessante para o futuro é usar valores padrão diretamente no construtor quando fizer sentido, reduzindo repetições no código.


class Cliente:
    def __init__(self, nome, email, telefone='Telefone nao informado'):
        self.nome = nome
        self.email = email
        self.telefone = telefone

    def __str__(self):
        return f'{self.nome}, {self.email}, {self.telefone}'

Esse código cria um cliente com um telefone padrao caso essa informacao nao seja enviada. Continue praticando, você está usando bem os conceitos de classes, atributos e métodos especiais.

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