1
resposta

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

# Criando a classe
class Musica:
    musicas = []
    def __init__(self, nome='', artista='', duracao=int):
        self.nome = nome
        self.artista = artista
        self.duracao = duracao
        Musica.musicas.append(self)
    def __str__(self):
        return f"{self.nome} | {self.artista}| {self.duracao}s"

    def listar_musicas():
        for musica in Musica.musicas:
            print(f"{musica.nome} | {musica.artista}| {musica.duracao}s")

# instanciando os objetos
musica1 = Musica("Sweet Child of Mine", "Guns n' Roses", 120)
musica2 = Musica("In The End", "Linkin Park", 133)
musica3 = Musica("Beat It", "Michael Jackson", 150)

#exibindo um objeto
print(musica1)


#exibindo todos os objetos
Musica.listar_musicas()
1 resposta

Oi, Luiz! Como vai?

Agradeço por compartilhar.

Seu código ficou bem organizado, e você aplicou corretamente a criação da classe Musica, o construtor __init__, o método __str__ e a lista de músicas como atributo da classe. Também ficou legal ver que os objetos são adicionados automaticamente em Musica.musicas ao serem instanciados.

Você está no caminho certo. Dica: ajuste o valor padrão de duracao, pois duracao=int passa o tipo int como padrão, e não um número. Você pode usar duracao=0 para deixar mais claro: def __init__(self, nome='', artista='', duracao=0):.

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