1
resposta

[Projeto] Minha Resolução.

class Musica:
    musicas = []

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

    def __str__(self):
        return f'{self.nome} | {self.artista} | {self.duracao}'
    
    def listar_musicas():
        for musica in Musica.musicas:
            print(f'{musica.nome} | {musica.artista} | {musica.duracao}') 

musica1 = Musica(nome='Um Pedido', artista='Hungria', duracao=305)
musica2 = Musica(nome='Memento Mori', artista='LetoDie', duracao=335)
musica3 = Musica(nome='Um Plano', artista='Misael', duracao=290)

Musica.listar_musicas()
1 resposta

Olá, Mateus! Tudo bem?

Parabéns! Continue resolvendo os desafios e compartilhando com a comunidade Alura.

Percebi que você dominou o uso de classes em Python, aplicou muito bem o conceito de atributos de classe para armazenar todas as músicas e ainda demonstrou compreender a relevância de métodos estáticos para organizar funcionalidades que não dependem de instância.

Uma sugestão interessante para evoluir ainda mais é usar o decorador @staticmethod com o objetivo de indicar claramente que o método listar_musicas não depende de uma instância da classe. Veja só:

class Musica:
    musicas = []

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

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

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

musica1 = Musica(nome='Um Pedido', artista='Hungria', duracao=305)
musica2 = Musica(nome='Memento Mori', artista='LetoDie', duracao=335)
musica3 = Musica(nome='Um Plano', artista='Misael', duracao=290)

Musica.listar_musicas()

Resultado:

Um Pedido | Hungria | 305
Memento Mori | LetoDie | 335
Um Plano | Misael | 290

Essa abordagem ajuda a deixar seu código mais semântico e legível, reforçando boas práticas de orientação a objetos.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

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!