1
resposta

[Projeto] Código do Refatorando uma Função

class Musica:
    musicas = []

    def __init__(self, nome: str, artista: str, duracao: int):
        self.nome = nome
        self.artista = artista
        self.duracao = int(duracao)
        self.musicas.append(self)
    
    def listar_musicas():
        for musica in Musica.musicas:
            print(f'{musica.nome} | {musica.artista} | {musica.duracao}')
    
musica1 = Musica('Billie Jean', 'Michael Jackson', 400)
musica2 = Musica('November Rain', 'Guns N Roses', 300)

Musica.listar_musicas()
1 resposta

Oi, Amaury! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei de como você utilizou um atributo de classe para armazenar todas as músicas e já fez a conversão da duração usando int(duracao) no construtor. Isso mostra que você entendeu bem a ideia de instanciar objetos e organizar os dados dentro da classe. Um ponto de atenção é que o método listar_musicas pode receber @classmethod para ficar mais alinhado com o uso do atributo da classe.

Uma dica interessante para o futuro é utilizar @classmethod para acessar atributos da classe de forma mais organizada. Veja este exemplo:


class Musica:

    musicas = []

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

    @classmethod
    def listar_musicas(cls):
        for musica in cls.musicas:
            print(f'{musica.nome} | {musica.artista} | {musica.duracao}')

Nesse código, cls representa a própria classe e permite acessar a lista musicas de forma adequada.

Alura

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