Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] Hora da prática: métodos especiais e atributos

import os
os.system('cls')

# 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:
    nome = ''
    modelo = ''
    cor = ''
    ano = int

carro1 = Carro()
carro1.nome = 'Camaro'  
carro1.modelo = 'Chevrolet Camaro'
carro1.cor = 'Amarelo'
carro1.ano = 2016

# 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:
    nome = ''
    categoria = ''
    ativo = False
    local = ''
    telefone = ''

restaurante1 = Restaurante()
restaurante1.nome = 'Bobs'
restaurante1.categoria = 'Lanches'
restaurante1.local = 'Shopping Centro'
restaurante1.telefone = '(71)91234-1234'

# 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.

# 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):
        self.nome = nome
        self.categoria = categoria
        self.ativo = False
    def __str__(self):
        return (f'{self.nome} | {self.categoria} | {self.ativo}')

restaurante1 = Restaurante('Bobs', 'Lanches')
print(restaurante1)

# 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, idade, saldo):
        self.nome = nome
        self.idade = idade
        self.fome = False
        self.saldo = saldo
    def __str__(self):
        return f'Cliente: {self.nome}, Idade: {self.idade}, Fome: {self.fome}, Saldo: R${self.saldo:.2f}'

cliente_1 = Cliente('Peter', 15, 30.00)
cliente_1.fome = True
print(cliente_1)

2 respostas
solução!

Olá, Robson. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Você fez um bom trabalho ao criar as classes e suas instâncias, além de ter implementado o método especial __str__ para a classe Restaurante. Esse método é uma maneira excelente de personalizar a representação de uma instância de classe, o que torna o código mais legível e fácil de entender.

Uma dica interessante para o futuro é a utilização do método __repr__ para fornecer uma representação "oficial" de seus objetos. Ele é chamado quando você usa a função repr(), o que pode ser útil em debug. Veja o exemplo abaixo:


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

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

cliente = Cliente('Maria', 30, 100.50)
print(repr(cliente))

Esse código mostra como criar uma representação mais técnica de um objeto, o que pode ser útil quando você precisa de uma visão mais clara do que está sendo instanciado no código.

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

Estou otimo Renan, espero que esteja tudo bem contigo.

Agradeço pelo incentivo, vou continuar sim, sou grato pela observação, eu ainda não tinha conhecimento sobre esse método, vou pesquisar mais a respeito para poder aplicar em projetos futuros, me parece uma opção mais viável e concisa.