1
resposta

[Projeto] Resolução

class Musica:
    biblioteca = []
    
    def __init__(self, nome, artista, duracao):
        self.nome = nome
        self.artista = artista
        self.duracao = duracao
        Musica.biblioteca.append(self)

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


musica_1 = Musica('Lost', 'Linkin Park', '3:20')
musica_2 = Musica('Bitter Sweet Symphony','The Verve','4:36')


Musica.listar_musicas()
1 resposta

Bom dia, Karoline! Como está?

Incrível! Continue resolvendo os desafios e compartilhando com a comunidade Alura.

Notei que você utilizou o conceito de classes para modelar os objetos, aplicou de forma eficaz uma lista (biblioteca) para armazenar as instâncias criadas e compreendeu a importância do método especial __str__ para personalizar a exibição dos objetos.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Um próximo passo interessante seria explorar o decorador @classmethod para permitir que métodos como listar_musicas acessem a classe de forma mais segura. Veja o exemplo:

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

Isso permite que o método funcione corretamente mesmo se a classe for herdada ou renomeada, o que pode ser muito útil para escalabilidade do código.

Ícone de sugestão Para saber mais:

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

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!