1
resposta

[Projeto] Resolução - Métodos especiais e atributos

# 1- Implemente uma classe chamada Carro com os atributos básicos, como modelo, cor e ano. Crie uma instância dessa classe e atribua valores aos seus atributos.

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

carro1 = Carro('Fusca', 'Azul', 1970)
carro2 = Carro('Gol', 'Vermelho', 2005)

print(vars(carro1))
print(vars(carro2))

# 2- Crie uma classe chamada Restaurante com os atributos nome, categoria, ativo e crie mais 2 atributos. Instancie um restaurante e atribua valores aos seus atributos.

class Restaurante: 
    def __init__(self, nome, categoria, endereco, telefone):
        self.nome = nome
        self.categoria = categoria
        self.ativo = False
        self.endereco = endereco
        self.telefone = telefone

restaurante_glamuor = Restaurante('Glamour', 'Gourmet', 'Rua das Flores, 123', '(19) 998765-4321')

print(vars(restaurante_glamuor))

# 3- Modifique a classe Restaurante adicionando um construtor que aceita nome e categoria como parâmetros e inicia ativo como False por padrão. Crie uma instância utilizando o construtor.

class Restaurante:
    def __init__(self, nome, categoria, ativo=False):
        self.nome = nome
        self.categoria = categoria
        self.ativo = ativo

restaurante_glamuor = Restaurante('Glamour', 'Gourmet')

print(vars(restaurante_glamuor))

# 4- Adicione um método especial __str__ à classe Restaurante para que, ao imprimir uma instância, seja exibida uma mensagem formatada com o nome e a categoria. Exiba essa mensagem para uma instância de restaurante.

class Restaurante:
    def __init__(self, nome, categoria, ativo=False):
        self.nome = nome
        self.categoria = categoria
        self.ativo = ativo

    def __str__(self):
        return f'Restaurante: {self.nome} | Categoria: {self.categoria}' 

restaurante_glamuor = Restaurante('Glamour', 'Gourmet')

print(restaurante_glamuor)

# 5- Crie uma classe chamada Cliente e pense em 4 atributos. Em seguida, instancie 3 objetos desta classe e atribua valores aos seus atributos através de um método construtor.

class Cliente: 
    def __init__(self, nome, email, telefone, endereco):
        self.nome = nome
        self.email = email
        self.telefone = telefone
        self.endereco = endereco

    def __str__(self):
        return f'Cliente: {self.nome} | Email: {self.email} | Telefone: {self.telefone} | Endereço: {self.endereco}'
    
cliente1 = Cliente('Maria', 'maria@email.com', '(19)998586-4442', 'Rua das Palmeiras, 456')
cliente2 = Cliente('João', 'joao@email.com', '(19)998723-6655', 'Avenida Central, 789')
cliente3 = Cliente('Ana', 'ana@email.com', '(19)997145-3231', 'Rua dos Bobos, 0')

print(cliente1)
print(cliente2)
print(cliente3)
1 resposta

Oi, Thaís! Como vai?

Gostei da forma como você organizou cada exercício separadamente e utilizou muito bem o método especial __str__ para deixar a exibição das informações mais amigável. O uso de vars() também ficou muito interessante para visualizar os atributos dos objetos durante os testes.

Uma dica interessante para o futuro é criar métodos dentro das classes para alterar informações dos objetos de forma mais organizada. Veja este exemplo:


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

    def mudar_cor(self, nova_cor):
        self.cor = nova_cor

carro = Carro('Fusca', 'Azul')
carro.mudar_cor('Preto')

print(carro.cor)

Neste exemplo, o método mudar_cor altera a cor do carro sem precisar modificar o atributo diretamente.

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