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! 💪