1
resposta

Mão na massa: refatorando uma função

class Musica:
    musicas = []

    def __init__(self, nome, artista, duracao):
        self.nome = nome
        self.artista = artista 
        self.duracao = duracao

        Musica.musicas.append(self)


    @classmethod
    def listar_musicas(cls):
        for musica in cls.musicas:
            print(f"Nome: {musica.nome} | Artista: {musica.artista} | Duração: {musica.duracao}")

    @classmethod
    def adicionando_musicas(cls):
        for i in range(1, 4):
            nome = input(f"Digite o nome da {i}° musica: ")
            artista = input(f"Digite o artista da {i}° musica: ")
            duracao = float(input(f"Digite a duracao da {i}° musica: "))

            Musica(nome, artista, duracao)
            

Musica.adicionando_musicas()
Musica.listar_musicas()
1 resposta

Olá, Rafaela! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de classes para organizar os dados das músicas, utilizou muito bem os métodos de classe para manipular a lista de objetos e ainda compreendeu a importância de estruturar entradas e saídas de forma clara para o usuário.

Uma dica interessante para o futuro é aplicar o método __str__ na classe para simplificar a exibição das músicas:

class Musica:
    musicas = []

    def __init__(self, nome, artista, duracao):
        self.nome = nome
        self.artista = artista 
        self.duracao = duracao
        Musica.musicas.append(self)

    def __str__(self):
        return f"Nome: {self.nome} | Artista: {self.artista} | Duração: {self.duracao}"

    @classmethod
    def listar_musicas(cls):
        for musica in cls.musicas:
            print(musica)

Isso faz a impressão dos objetos de forma mais elegante e reutilizável.

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!