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

[Practica] Mão na massa: refatorando uma função

Bom dia,

Estou enviando o código do exercício, ainda tenho algumas dúvidas, mas suponho que com a prática vai melhorar, de qualquer forma, agradeceria sua ajuda com seus comentários, desde já agradeço.

class Musica:
    musicas=[]
    def __init__(self,nome, artista, duracao):
        self.nome=nome
        self.artista=artista
        self.duracao=duracao
        Musica.musicas.append(self)
        
            
    def listarMusica():
        for music in Musica.musicas:
            print(f'{music.nome} - {music.artista} - {music.duracao}') 
    
musica1= Musica('Flaca','Andres Calamargo', 445)
musica2= Musica('La Paya', 'La oreja de Van gogh', 345)
musica3= Musica('Aguita de coco', 'Kany Garcia', 423)

Musica.listarMusica()
2 respostas
solução!

Bom dia, Ana! Tudo bem?

Seu código está ótimo e já está utilizando bem os conceitos de orientação a objetos. Vou te dar algumas dicas para refatorar a função e deixá-la mais concisa e expressiva, como sugerido na atividade.

  1. Método listarMusica: Atualmente, ele está definido como um método estático (sem self), mas você pode transformá-lo em um método de classe usando o decorador @classmethod. Isso facilita o acesso aos atributos da classe.

  2. Uso de __str__: Para tornar a impressão das músicas mais Pythonica, você pode implementar o método __str__ na classe Musica. Isso permite que você simplesmente use print(musica) para obter uma representação legível da música.

Aqui está uma versão refatorada do seu código:

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'{self.nome} - {self.artista} - {self.duracao}'

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

musica1 = Musica('Flaca', 'Andres Calamargo', 445)
musica2 = Musica('La Paya', 'La oreja de Van Gogh', 345)
musica3 = Musica('Aguita de coco', 'Kany Garcia', 423)

Musica.listarMusica()

Com essas alterações, o código fica mais alinhado com as práticas comuns em Python. O uso de @classmethod e __str__ são recursos que ajudam a manter o código limpo e mais fácil de entender.

Espero ter ajudado e bons estudos!

Olá Armano,

Ótimo, muito obrigada pelos comentários e esclarecimentos, realmente ajuda muito.

Muito Obrigada