1
resposta

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

from datetime import timedelta
class Musica:
    musicas = []
    def __init__(self, nome, artista, duracao_str):
        self.nome = nome
        self.artista = artista
        minutos, segundos = map(int, duracao_str.split(":"))
        self.duracao = timedelta(minutes=minutos, seconds=segundos)

        Musica.musicas.append(self)

    def __str__(self):
        return f'{self.nome} - {self.artista} - {self.duracao}'

    def listar_musicas():
        for musica in Musica.musicas:
            print(musica)

musica1 = Musica('Merry go round of Life', 'Joe Hisashi', '6:56')
musica2 = Musica('Cello Suite No. 1 in G Major, BWV 1007', 'Bach', '3:56')
musica3 = Musica('Concerto for Two Cellos in G minor, RV 531', 'Vivaldi', '4:50')

Musica.listar_musicas()
1 resposta

Oi, Luís! Como vai?

Agradeço por compartilhar. Gostei da sua refatoração, importante notar que você usou o __init__ para receber os dados da música, converter a duração com timedelta e armazenar cada objeto na lista musicas, o que combina bem com a proposta de aplicar Orientação a Objetos.

Seu código está bem organizado e mostra que você entendeu a ideia de criar objetos a partir da classe Musica.

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