Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Oi Bruno,
Sua solução está bem encaminhada! 👍
A classe Musica está armazenando as músicas em uma lista estática musicas.
No entanto, o método __str__ está imprimindo "Dados da música" e retornando uma string formatada.
O ideal seria que ele apenas retornasse a string formatada, sem imprimir nada. 🤔
class Musica:
musicas = []
def __init__(self, nome, artista, duracao):
self.nome = nome
self.artista = artista
self.duracao = duracao
Musica.musicas.append(self)
def __str__(self):
return ('Dados da música:\n'
f'Nome: {self.nome}\n'
f'Artista: {self.artista}\n'
f'Duração: {self.duracao} minutos\n')
def listar_musicas():
print('Dados de músicas:\n')
for musica in Musica.musicas:
print(f'Nome: {musica.nome}\n'
f'Artista: {musica.artista}\n'
f'Duração: {musica.duracao} minutos\n')
musica_1 = Musica('Chã de Giz', 'Zé Ramalho', 7)
musica_2 = Musica('Há Tempos', 'Legião urbana', 4)
Musica.listar_musicas()
print(musica_1)
Para saber mais: Documentação oficial do Python sobre métodos especiais. Este link aborda o uso e a importância dos métodos especiais como __init__ e __str__ em Python.
Continue praticando e explorando as possibilidades da orientação a objetos! 💪