1
resposta

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

class Carro:

    carros = []

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

        Carro.carros.append(self)

    def __str__(self):
        return (f"Modelo: {self.modelo} | Cor: {self.cor} | Ano: {self.ano}")
    
    @classmethod
    def listar_carros(cls):
        for carro in cls.carros:
            print(carro)

    @classmethod
    def adicionar_carros(cls):
        for i in range (1, 3):
            modelo = input(f"Modelo do {i}° carro: ")
            cor = input(f"Cor do {i}° carro: ")
            ano = int(input(f"Ano do {i}° carro: "))

            Carro(modelo, cor, ano)

Carro.adicionar_carros()
Carro.listar_carros()
#estou fazendo assim pois o exercicio nao pedia por init, nem str :)

class Restaurante:
    
    nome = ""
    categoria = "" 
    ativo = False
    cor_fachada = ""
    ano_abertura = 0

resturante1 = Restaurante()

resturante1.nome = input("Digite o nome do restaurante: ")
resturante1.categoria = input("Digite a categoria do restaurante: ")
resturante1.cor_fachada = input("Digite a cor da fachada do restaurante: ")
resturante1.ano_abertura = int(input("Digite o ano de abertura do restaurante: "))

print(vars(resturante1))

class Restaurante:
    restaurantes = []

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

        Restaurante.restaurantes.append(self)

    @classmethod
    def adicionar_restaurantes(cls):
        for i in range(1, 3):
            nome = input("Digite o nome do restaurante: ")
            categoria = input("Digite a categoria do restaurante: ")

            Restaurante(nome, categoria)
    
    def __str__(self):
        status = "Ativo" if self.ativo else "Desativado"
        return (f"Nome: {self.nome} | Categoria: {self.categoria} | Status: {status}")

    @classmethod
    def listar_restaurantes(cls):
        for restaurante in cls.restaurantes:
            print(restaurante)

Restaurante.adicionar_restaurantes()
Restaurante.listar_restaurantes()
from datetime import datetime

class Cliente:
    clientes = []
    def __init__(self, nome, cpf, fidelidade, data_nascimento):
        self.nome = nome
        self.cpf = cpf
        self.fidelidade = False
        self.data_nascimento = data_nascimento

        Cliente.clientes.append(self)

    def __str__(self):
        fidelidade = "Possui" if self.fidelidade else "Não possui"
        data_txt = self.data_nascimento.strftime("%d/%m/%Y")
        return (f"Nome: {self.nome} | Cpf: {self.cpf} | Fidelidade: {fidelidade} | Data de nascimento: {data_txt}")
    
    @classmethod
    def adicionar_clientes(cls, quantidade):
        for i in range(quantidade):
            nome = input("Nome: ").strip()
            cpf = input("Cpf (apenas numeros): ").strip()

            while True:  
                data_str = input("Data de nascimento (dd/mm/aaaa): ")

                try:
                    data_nascimento = datetime.strptime(data_str, "%d/%m/%Y")
                    break
                except ValueError:
                    print("Formato inválido.")

            Cliente(nome, cpf, False, data_nascimento)

    @classmethod
    def listar_clientes(cls):
        for cliente in cls.clientes:
            print(cliente)

            
cliente1 = Cliente("Rafaela", "12345678910", False, datetime.strptime("24/03/2006", "%d/%m/%Y"))
Cliente.adicionar_clientes(2)
Cliente.listar_clientes()
1 resposta

Olá, Rafaela! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de classes para organizar diferentes entidades, utilizou muito bem os métodos de classe para gerenciar listas de objetos e ainda compreendeu a importância do método __str__ para tornar a saída mais legível e informativa.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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