1
resposta

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

# Exercícios

# 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

    def __str__(self):
        return f"{self.modelo} | {self.cor} | {self.ano}"

carro_1 = Carro("La Voiture Noire", "Preto", 2019)
print(carro_1)

# 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, ativo, popularidade, custo):
        self.nome = nome
        self.categoria = categoria
        self.ativo = ativo
        self.popularidade = popularidade
        self.custo = custo
    
    def __str__(self):
        return f"{self.nome} | {self.categoria} | {self.ativo} | {self.popularidade} | {self.custo}"
    
restaurante_1 = Restaurante("Sublimotion", "tradicional", True, "Altíssima", "Extremamente elevado")
print(restaurante_1)

# 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, popularidade, custo, ativo=False):
        self.nome = nome
        self.categoria = categoria
        self.ativo = ativo
        self.popularidade = popularidade
        self.custo = custo

novo_restaurante = Restaurante(nome="Per Se", categoria="Culinária Francesa Moderna", popularidade="Muito Alta", custo="Elevado")

# 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, popularidade, custo):
        self.nome = nome
        self.categoria = categoria
        self.ativo = ativo
        self.popularidade = popularidade
        self.custo = custo
    
    def __str__(self):
        return f"{self.nome} | {self.categoria} | {self.ativo}"
    
restaurante_2 = Restaurante(nome="Masa", categoria="Culinária Japonesa", ativo=True, popularidade="Altíssima", custo="Extremamente elevado")
print(restaurante_2)
    
# 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, idade, nacionalidade, email):
        self.nome = nome
        self.idade = idade
        self.nacionalidade = nacionalidade
        self.email = email

cliente_1 = Cliente("Ana Carolina", 28, "Brasileira", "ana.carol@email.com")
cliente_2 = Cliente("Kenji Tanaka",	45, "Japonês", "kenji.t@exemplo.jp")
cliente_3 = Cliente("David Smith", 50, "Canadense", "david.smith@dominio.ca")
1 resposta

Ei, Guilherme! Tudo bem?

Seu código está bem organizado e correto, parabéns! A escolha dos atributos nas classes foi bem pensada para o contexto de cada exemplo.

Dica: teste usar o método __repr__ quando quiser uma representação mais técnica dos objetos, útil para debugging:


class Cliente:
    def __init__(self, nome, idade):
        self.nome = nome
        self.idade = idade

    def __repr__(self):
        return f"Cliente(nome='{self.nome}', idade={self.idade})"

cliente = Cliente("Maria", 30)
print(cliente)

Esse código exibe Cliente(nome='Maria', idade=30) e ajuda a entender melhor a estrutura do objeto ao depurar.

Continue se dedicando aos estudos e qualquer dúvida, compartilhe no fórum.

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